我正在开发一个大型项目,它在许多存储库中被拆分。
我正在考虑制作一个小的bash脚本来迭代并检查每个存储库中的特定远程或本地分支或标记,但如果由于分支不存在而失败,则有第二个选项标记/存储库的结帐。
即
#!/bin/bash
printf "\n ### Checkout Tag ### \n \n"
for repo in rep1 rep2 ...
do
checkout $1
(check if that fails somehow, and if it fails, checkout $2)
done
printf "\n ### DONE ### \n \n"
exit 0
或者,您有其他想法吗?
谢谢
答案 0 :(得分:2)
#!/bin/bash
printf "\n ### Checkout Tag ### \n \n"
for repo in rep1 rep2 ... ; do
checkout $1
if [[ $? != 0 ]]; then
checkout $2
if [[ $? != 0 ]]; then
echo "Failed to checkout $1 and $2"
fi
fi
done
printf "\n ### DONE ### \n \n"
exit 0
答案 1 :(得分:1)
您无需手动检查返回代码。只需使用||
连接命令即可。
#!/bin/bash
printf "\n ### Checkout Tag ### \n \n"
for repo in rep1 rep2 ...
do
checkout $1 || checkout $2 || echo "Error"
done
printf "\n ### DONE ### \n \n"
exit 0
仅当先前失败时, ||
才会执行以下命令。
把它想象成"其中一个命令必须成功"。如果第一个成功,你很好,不必检查以下内容。
&&
才会执行以下命令。
把它想象成"所有命令都必须成功"。如果第一个失败,您已经丢失,无需检查以下内容。
在我看来,这个解决方案比接受的答案更清晰,更容易。