所以这就是情况。我有一个包含多个子模块的git存储库。顶级目录和所有子模块都包含Visual Studio 2010解决方案。
顶级存储库取决于子模块是最新的,每次更新时都需要重建子模块。我想要做的是,因为有任意数量的子模块,就是在git中进行某种更新后的钩子来编译刚更新的子模块。
所以我的问题是:更新子模块时会调用什么钩子(如果有的话)?似乎结账后可能是我想要的,但我不确定。
我们正在使用TortoiseGit和Git for Windows(msysgit)作为后端,如果这会产生影响。
答案 0 :(得分:1)
这应该可以,父回购上的 post-update hook
:
您需要监视.gitmodules
文件是否有任何更改,以便检测该文件中的任何更改(指示父repo的另一个克隆已更改子模块并在父存储库中提交新引用)。登记/>
然后你可以:
git submodule update --recursive
)但是假设已经修改了父repo的克隆以引用子模块的新提交。
如果您的子模块独立于任何父仓库进行更新,那么在父仓库的结账/更新时,相同的post-update
挂钩(仍然在父仓库上)需要:
git pull
(即已更改)的文件您可以在每个子模块上设置更新后挂钩,但是当您从父存储库添加或删除子模块时,上述方法可以更好地扩展,因为它将检测过程集中在一个位置(post-update
挂钩父母回购)。