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

Automate Git merge in continuous integration but fail if there are merge conflicts

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

有没有人有过这种设置的经验(最好是使用 TeamCity,但任何 CI 服务器都会很有趣)?

这可以在 TeamCity 中使用自动合并构建功能来实现

合并只会在构建成功后执行,但如果在合并过程中有任何冲突,随后构建将失败。

可以在此处找到更多详细信息 - TeamCity Documentation

希望对您有所帮助。

我不久前写了一个 bash 脚本来执行此操作。实际上,完整的脚本会在我们的 github 仓库中为 所有 打开带有 test 标签的 PR 执行此操作。

Full script

相关位:

try_merge()
{
    test -n ""
    local branch= 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
}