git 提交后 Hook

标签 git repository github

我有两个 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/

相关文章:

git - 使用 Git 协作完成一个 4 人项目

github - Git 要点缺少字段用户

git - 基于 Emacs 的 Git 差异工具?

eclipse - 来自 eclipse (egit) 的部分 git 提交

git - 无法将现有项目克隆或推送到 gitlab

java - 在 spring 工具套件中找不到丢失的 com.css maven Artifact

ruby - 我可以在 gemfile 中强制 gem 的依赖项吗?

git - GWT 源代码 repo - GIT 和 SVN - 跟踪更改的是哪个?

git - 删除 HEAD 之前的提交

join - Doctrine Query Builder 嵌套 orX 和 andX 条件与连接