0

我有一个 bash 脚本,它应用了一个目录中的所有 git 补丁(脚本见底部)。每次我在服务器上部署网站时都会运行此脚本。

我现在遇到了一个问题,几周后补丁抛出错误并退出脚本并出现错误“补丁不适用”。有谁知道是否有一种方法可以忽略损坏的/旧的补丁,并且可能只是显示脚本不再工作的错误,而不是完全退出导致我的网站部署失败的脚本?

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
4

1 回答 1

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

或类似的规定。

于 2018-09-21T19:50:56.670 回答