3

我有一个关于与 Jenkins for Git/Gerrit 持续集成的问题:当 Git 更改需要 rebase/merge 时,是否有任何方法可以取消 Jenkins 作业执行,因为在等待期间已接受先前的更改?

此致,

4

1 回答 1

0

经过调查,我找到了一种检测潜在合并冲突的方法。基于 Windows 的 shell 脚本如下所示:

git fetch
git merge-base HEAD origin/master > _base
set /p MERGEBASE=<_base
git merge-tree %MERGEBASE% HEAD origin/master | grep -E -A3 "changed in both">_tempDiff
cat _tempDiff
set /p VAR=<_tempDiff
if not "%VAR%"=="" (
      echo "Your change needs rebase"
      exit /b -1
)
exit /b 0

如果在 Gerrit 验证构建的第一次运行此脚本,则当当前分支修改与最新的 master 分支相同的文件时,构建将立即中断,通常用户必须在构建后在 Gerrit 中 rebase。

于 2014-02-26T10:29:17.777 回答