在持续集成中自动化Git合并,但如果存在合并冲突则会失败

时间:2015-07-02 10:29:28

标签: git continuous-integration teamcity

我正在使用的团队希望使用持续集成来自动合并两个git分支。但是,如果存在合并冲突,我们希望持续集成作业失败,以便开发人员可以手动运行合并并解决任何问题。

有没有人有这种设置的经验(理想情况下是TeamCity,但任何CI服务器都会很有趣)?

2 个答案:

答案 0 :(得分:2)

这可以通过使用自动合并构建功能

在TeamCity中实现

enter image description here

合并将仅在成功构建之后执行,但如果在合并期间存在任何冲突,则随后将失败构建。

更多细节可以在这里找到 - TeamCity Documentation

希望这有帮助。

答案 1 :(得分:0)

我写了一个bash脚本来做这件事。实际上,完整的脚本为我们的github仓库中带有test标记的所有打开的PR执行此操作。

Full script

相关位:

try_merge()
{
    test -n "$1"
    local branch=$1 commit
    if ! commit=$(git rev-parse --verify -q $branch)
    then
        error bogus $branch
        return
    fi
    if bash -c 'set -o pipefail; git branch --contains '$commit' | grep -qw master'
    then
        warning already $branch
        return
    fi
    if git merge --ff-only $branch $commit
    then
        good fast $branch $commit
        return
    fi
    if git merge $branch $commit
    then
        good merge $branch $commit
        return
    fi
    git merge --abort
    error abort $branch $commit
    return
}