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