Git应用忽略失败的补丁

时间:2018-09-21 19:38:20

标签: bash git git-apply

我有一个bash脚本,可将所有git补丁应用到目录中(该脚本请参见底部)。每当我在服务器上部署网站时,都会运行此脚本。

我现在遇到了一个问题,即几个星期后,该补丁引发了一个错误,并退出了错误为“ patch not apply”的脚本。有谁知道是否有一种方法可以忽略损坏的/旧的补丁程序,并且可能只是显示一个错误,表明该脚本不再起作用,而不是完全退出该脚本,导致我的网站部署失败?

for file in ${PROJECT_PATH}/${PATCH_DIR}/*.patch; do
    if [[ -e ${file} ]]; then
        echo -n "Applying patch '${file}' ... "
        ${RUN_AS} git ${GIT_PROJECT_PATH} apply --directory="${PROJECT_PATH}" --unsafe-paths "${file}"
        echo "Done"
    fi
done

1 个答案:

答案 0 :(得分:0)

我看不出它将停止应用补丁的任何原因。如果失败了,您可能会得到一些错误输出,然后您说“完成”(我认为可能有点误导),然后 for 将会继续。

我想对于初学者来说,您需要控制补丁是否成功。像 这样的东西(根据您的需要进行调整):

for file in ${PROJECT_PATH}/${PATCH_DIR}/*.patch; do if [[ -e ${file} ]]; then echo -n "Applying patch '${file}' ... " ${RUN_AS} git ${GIT_PROJECT_PATH} apply --directory="${PROJECT_PATH}" --unsafe-paths "${file}" if [ $? -ne 0 ]; then # there was an error echo git apply of patch $file failed on $GIT_PROJECT_PATH/$PROJECT_PATH else echo "Done" fi fi done

或者类似的东西。