我有两个 git 项目存储库,它们有两个或三个共同的文件。
像这样:
项目 A ------> helper_functions
项目 B ------> helper_functions
我想知道是否有一种公认的方法可以在存储库之间“共享”这些通用帮助文件,这样我就不必在两个存储库中维护单独的副本。
当项目 A 的 helper_functions 更新时,会不会有类似提交后 Hook 的东西来更新项目 B 中的 helper_functions?或者是否有更无缝的方法来确保两个项目都具有最新和最好版本的 helper_functions 文件,并且该文件自动包含在项目的任何包中?
感谢您提供有关处理此问题的公认方法的任何想法或资源。
此外,我想补充一点,这两个项目都有合作者,因此理想情况下它是自动的,这样我们就可以在同一页面上,而无需使用软链接(soft link)或别名。
最佳答案
有些人可能会说这对几个文件来说太过分了,但对我来说这听起来像是使用 git 对子模块的支持的好例子。基本上,您将创建一个名为 helper_functions
的新存储库,并将其作为子模块添加到每个现有存储库中:
git submodule add git://foo/bar/helper_functions.git helper_functions
然而,使用子模块有一些微妙之处,因此值得先阅读一下。我喜欢 description in the git manual作为起点,但还有很多其他很好的解释,例如来自 Pro Git .
我不会创建 Hook 来提交和推送子模块,但是 - 我认为最好仔细考虑何时要更新主存储库中提交的子模块的版本。不过,我发现非常有用的是使用 commit-submodule
脚本,确保在将新的子模块版本提交到存储库之前推送您的子模块更改。
关于git 提交后 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345409/