递归地执行所有git-submodule参考更新

时间:2018-08-03 15:21:47

标签: git jenkins git-submodules

我正在努力让Jenkins在git子模块中发挥出色的作用。当前的过程是拉出父仓库和子模块,进行构建,修改版本,进行一系列更改,标记仓库,提交并推送。

我正在添加一个选项来更新子模块引用,并且似乎也可以正常工作(将跟踪分支信息添加到.gitmodules文件之后)。但是,我没有足够的自动(或递归地)将所有跟踪分支参​​考更新暂存为提交的运气。

因此,为了进行参考更改,我需要做一个git add /path/to/sub。如果/当跟踪其他子模块时,尤其是在我尝试将stage / commit / tag操作作为Jenkins全局库函数时,这可能会成为问题。

需要明确的是,我不是要提交在子模块内部进行的更改,而是要对父仓库对子模块sha的引用进行更改。

>

我不确定这样的命令是否已经存在,但是我找不到它。我正在设想类似git add --submodule-paths的方式。我觉得可以通过用git submodule foreach遍历子模块然后执行一些操作来完成此操作,但是几个小时后我什么都没想。

有什么好方法吗?!

1 个答案:

答案 0 :(得分:1)

我能够弄清楚这一点。这是我最终要做的,以防其他人感兴趣:

git submodule foreach "git tag <some_version>"
git submodule foreach "cd $toplevel; git commit $path -m '<some_version> - Updating submodule reference'"
git submodule foreach "git push --tags"

$toplevel在git的foreach中预定义,并且是父工作空间根目录的绝对路径。

$path在git的foreach中预定义,并且是从父存储库到子模块根目录的相对路径。