Git的钩来更新子模块的变更上层项目?(Git hook to update superprojec

2019-09-28 07:57发布

我有三个Git仓库: AB ,和CC是包括子模块一个上层项目AB ,跟踪每个子模块的相应的主分支。

当主分支AB改变时,我必须做在下面的C

git submodule update --remote
git add A
git add B
git commit -m "Update submodule A or B"
git push

此时自动构建和选自C部署被执行。

我正在寻找方法来简化这一过程。 理想情况下,任何承诺的主分支AB将触发一个钩来更新,提交和推到C 。 任何想法如何实现这一目标?

编辑:如果有一个供应商特定的功能,我应该知道的,我使用Azure中的DevOps的git的托管和Azure的管道为构建和部署过程。

Answer 1:

您可以使用一个git的post-commit 钩子 ,当你做的钩子将要执行的子模块的提交,并会做的命令。

  1. 进入每个子模块回购。
  2. 创建文件的.git /挂钩/后犯了以下内容:

     #!/bin/sh branch="$(git rev-parse --abbrev-ref HEAD)" if [ "$branch" = "master" ]; then cd {super repo location} git submodule update --remote git add A git add B git commit -m "Update submodule A or B" git push fi 
  3. 使其可执行(无需在Windows上):

     $ chmod +x .git/hooks/pre-commit 


文章来源: Git hook to update superproject on submodule change?