我有一个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
答案 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
或者类似的东西。