我正在努力让Jenkins在git子模块中发挥出色的作用。当前的过程是拉出父仓库和子模块,进行构建,修改版本,进行一系列更改,标记仓库,提交并推送。
我正在添加一个选项来更新子模块引用,并且似乎也可以正常工作(将跟踪分支信息添加到.gitmodules文件之后)。但是,我没有足够的自动(或递归地)将所有跟踪分支参考更新暂存为提交的运气。
因此,为了进行参考更改,我需要做一个git add /path/to/sub
。如果/当跟踪其他子模块时,尤其是在我尝试将stage / commit / tag操作作为Jenkins全局库函数时,这可能会成为问题。
需要明确的是,我不是要提交在子模块内部进行的更改,而是要对父仓库对子模块sha的引用进行更改。
>我不确定这样的命令是否已经存在,但是我找不到它。我正在设想类似git add --submodule-paths
的方式。我觉得可以通过用git submodule foreach
遍历子模块然后执行一些操作来完成此操作,但是几个小时后我什么都没想。
有什么好方法吗?!
答案 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
中预定义,并且是从父存储库到子模块根目录的相对路径。