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 子模块更新为指定的提交

Git 在哪里存储子模块提交的 SHA1?

忽略 git 子模块的新提交

如何摆脱 Git 子模块未跟踪状态?

您是不是忽略 .gitignore 中的 git 子模块或将其提交到您的仓库?

通过 GitExtensions 来使用 Git 子模块功能