Git提交后钩子

3
我有两个git项目仓库,其中有两个或三个文件是相同的。
例如:
Project A -------> helper_functions
Project B -------> helper_functions
我想知道是否有一种被认可的方法可以在这些仓库之间“共享”这些常用的帮助文件,这样我就不必在两个仓库中维护单独的副本了。
是否可以采用后提交挂钩(post commit hook)来更新Project A中的helper_functions时更新Project B中的helper_functions?或者是否有更无缝的方法来确保两个项目都拥有最新和最优秀的helper_functions文件,并且该文件会自动包含在项目的任何软件包中?
如果您有任何关于处理此问题的建议或资源,感谢您的提供。同时,我想添加的是,这两个项目都有协作者,因此最好是自动化的,这样我们就能在同一页上了,而不必使用软链接或别名。
2个回答

4

有些人可能会认为这对于仅有几个文件来说有些过度,但对我而言,这听起来是使用git支持子模块的好案例。基本上,你可以创建一个名为helper_functions的新存储库,并将其作为子模块添加到每个现有存储库中,方法如下:

git submodule add git://foo/bar/helper_functions.git helper_functions

有一些关于使用子模块的微妙之处,因此最好先进行一些阅读。我喜欢Git手册中描述作为起点,但还有很多其他好的解释,例如Pro Git中的解释。
然而,我不会创建钩子来提交和推送子模块 - 我认为仔细考虑何时更新提交在主存储库中的子模块版本更好。不过,我发现使用commit-submodule脚本非常有用,该脚本确保在提交新的子模块版本到存储库之前,您已经推送了子模块的更改。

谢谢你迅速而详尽的回答,马克。我以前从未遇到过 Git 的这个功能。 - undefined
小心对待它。很快你会发现自己会用到我的答案。 - undefined

0
我会使用子模块,但我推荐使用"git slave"来处理共享仓库的任何更新。
另一种选择是使用子树。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接