git merge 以编程方式检测冲突

Ehu*_*and 2 git bash

我需要在 CI CD 期间从一个分支合并到另一个分支。我正在寻找一种方法来检测合并后的冲突,从而停止该过程并发出警报。这就是我现在所拥有的:

#! /bin/bash 

echo 'start'

function do_merge() {
    git merge auto
}

function is_merge_ok(){
    local merge_response = $(do_merge)
    local SUB = 'error'
    if [[ "$merge_response" == "*$SUB*" ]]; then
        echo 'false'
    else
        echo 'true'
    fi
}


local was_merge = $(is_merge_ok)
if [[ "$was_merge" == "false" ]]; then
    exit(1)
else    
    exit(0)
fi
Run Code Online (Sandbox Code Playgroud)

但它没有收到错误。有办法实现吗?谢谢

LeG*_*GEC 5

git merge已经有一个指示成功或失败的退出代码。

直接git merge auto在您的if

if git merge auto; then
   echo "sucess !"
else
   exitcode=$?
   echo "failure"
   exit $exitcode
fi
Run Code Online (Sandbox Code Playgroud)

或者在执行后立即存储退出代码git merge auto以供以后比较:


git merge auto
exitcode=$?

... # do something else

if [ $exitcode -eq 0 ]; then
   echo "success"
else
   echo "failure"
fi
Run Code Online (Sandbox Code Playgroud)

您当前的脚本大致相当于:

if git merge auto > /dev/null; then
    exit 0;
else
    exit 1;
fi
Run Code Online (Sandbox Code Playgroud)