我有三个git存储库:A
,B
和C
。 C
是一个包含子模块A
和B
的超级项目,跟踪每个子模块各自的主分支。
更改A
或B
的主分支后,我必须在C
中执行以下操作:
git submodule update --remote
git add A
git add B
git commit -m "Update submodule A or B"
git push
此时,将执行从C的自动构建和部署。
我正在寻找简化此过程的方法。理想情况下,对A
或B
的master分支的任何提交都会触发钩子来更新,提交和推送到C
。任何想法如何实现这一目标?
编辑:如果有我应该了解的特定于供应商的功能,则我将Azure DevOps用于git托管,并将Azure Pipelines用于构建和部署过程。
答案 0 :(得分:0)
您可以使用git post-commit hook,当您在子模块中进行提交时,挂钩将被执行并执行命令。
使用以下内容创建文件 .git / hooks / post-commit :
#!/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
使其可执行(在 Windows 上不是必需的):
$ chmod +x .git/hooks/pre-commit