递归地转移所有git子模块引用更新

递归地转移所有git子模块引用更新,git,jenkins,git-submodules,Git,Jenkins,Git Submodules,我正在努力让Jenkins更好地使用git子模块。当前的过程是拉取父repo和子模块,进行构建,升级版本,进行一系列更改,标记repo,提交和推送 我正在添加一个选项来更新子模块引用,这似乎也可以正常工作(在将跟踪分支信息添加到.gitmodules文件之后)。然而,在自动(或者,可能是递归地)将所有跟踪分支引用更新转移到提交中时,我运气不太好 因此,为了进行引用更改,我需要执行一个git add/path/to/sub。如果/当跟踪其他子模块时,尤其是当我尝试将stage/commit/tag

我正在努力让Jenkins更好地使用git子模块。当前的过程是拉取父repo和子模块,进行构建,升级版本,进行一系列更改,标记repo,提交和推送

我正在添加一个选项来更新子模块引用,这似乎也可以正常工作(在将跟踪分支信息添加到.gitmodules文件之后)。然而,在自动(或者,可能是递归地)将所有跟踪分支引用更新转移到提交中时,我运气不太好

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

明确地说,我并不是试图提交子模块内部所做的更改,而是提交母公司回购协议对子模块sha的引用的更改

我不确定这样的命令是否已经存在,但我还没有找到它。我设想了一些类似于GitAdd的东西——子模块路径。我觉得可以通过使用
gitsubmoduleforeach
在子模块上迭代,然后做一些事情来完成,但几个小时后我什么都没想到


有什么好办法吗

我能弄明白这一点。以下是我最后要做的,以防其他人感兴趣:

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"
git子模块foreach“git标签”
git子模块foreach“cd$toplevel;git commit$path-m'-更新子模块引用”
git子模块foreach“git push--tags”
$toplevel
是在git的
foreach
中预定义的,是父工作区根目录的绝对路径

$path
在git的
foreach
中预定义,是从父repo到子模块根的相对路径