在子模块更改时更新超级项目的Git钩子?

问题描述 投票:1回答:1

我有三个git存储库:ABCC是一个超级项目,包括子模块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 Pipelines进行构建和部署过程。

git azure-devops git-submodules azure-pipelines githooks
1个回答
0
投票

您可以使用git post-commit hook,当您在子模块中执行提交时,将执行挂钩并执行命令。

  1. 转到每个子模块仓库。
  2. 使用以下内容创建文件.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
  3. 使其可执行(Windows上不需要): $ chmod +x .git/hooks/pre-commit
© www.soinside.com 2019 - 2024. All rights reserved.