Git 子模块提交钩子
Posted
技术标签:
【中文标题】Git 子模块提交钩子【英文标题】:Git submodule commit hooks 【发布时间】:2012-06-06 13:43:02 【问题描述】:我正在使用一个 git 子模块(我们称之为 SubmoduleRepo),以便我可以将我的模块包含在几个项目中。
我可以从任何使用它的项目提交到 SubmoduleRepo。
我可以轻松地更新、提交和推送到 SubmoduleRepo。
每当我在包含 SubmoduleRepo 的项目的目录中工作时提交某些内容时,我都需要执行一个提交挂钩(当我在 SubmoduleRepo 中工作时,提交挂钩按预期执行)
子模块的目录中没有 .git 文件夹(只有指定当前目录路径的 .git 文件)。
【问题讨论】:
这是一个老问题,但您可能应该将正确答案分配给您自己或 Jason。 :) 【参考方案1】:我在发布此消息后不久就找到了解决方案...
您可以将钩子放在 .git/modules//hooks/ 中 - 例如。 .git/modules/web/js/modules/rate 如果您的子模块位于 /web/js/modules/rate 目录中。
【讨论】:
很遗憾,这不是可编写脚本的。 这可以使用git rev-parse --git-dir
编写脚本。见:***.com/questions/14073053/…【参考方案2】:
如果你有 Git 2.10+,你可以通过运行获得 hooks
目录:
`git rev-parse --git-path hooks`
注意:默认情况下它是.git/hooks
,但如果你在子模块中,它会有所不同。
Pre Git 2.10+ 你会想要这样的东西:
`git rev-parse --git-dir`/hooks
更多信息请访问: Find path to git hooks directory on the shell
【讨论】:
以上是关于Git 子模块提交钩子的主要内容,如果未能解决你的问题,请参考以下文章
Xcode Bots 不会将 git 子模块更新为指定的提交