我正在使用项目A和子模块项目B运行构建作业。 两个项目都有一个fork我们正在跟踪标签。
因此,给出了以下项目:
Project A
- Fork Project A-fork
Project B (submodule of A)
- Fork Project B-Fork
目标: 构建之后,我想为A-fork和B-fork添加一个标签,以便知道在两个项目中都采用了哪些代码提交。
问题: 我正在向Jenkins GIT存储库添加A(名称“origin”),A-fork(forkA)和B-fork(forkB)。 高级子模块行为设置为“递归更新子模块”和“将跟踪子模块更新到分支的尖端”。
作为一个构建后的步骤,我通过控制台推送标签:
git push forkA refs/tags/${RELEASE_TAG}
git push forkB refs/tags/${RELEASE_TAG}
所以,现在真正的问题: 当执行这样的操作时,推送到forkB(我的子模块)的标记指的是我的父存储库A中的提交,但不是指用作B中子模块的最新代码。
我如何采用这个,以便我的标签指的是子模块B中的最新提交?
由于 基督教
答案 0 :(得分:0)
好的,我知道修复它"手动"作为执行shell步骤。
git push forkA refs/tags/${RELEASE_TAG}
# Cleanup workspace, keeping git config
find . ! -path . | grep -v ".git" | xargs rm -rf
HASH=`git rev-parse refs/remotes/forkB/master^{commit}`
git checkout -f ${HASH}
git tag -a ${RELEASE_TAG}-forkB -m "ForkB Ref: ${RELEASE_TAG}"
git push forkB refs/tags/${RELEASE_TAG}-forkB
不是很好,但工作。