我正在处理一个大项目,它被分成许多存储库。
我正在考虑制作一个小的 bash 脚本,它在每个存储库中迭代和检出特定的远程或本地分支或标签,但如果由于分支不存在而失败,则有标签/存储库的第二个选项来检出。
IE
#!/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
Run Code Online (Sandbox Code Playgroud)
或者,您有其他想法吗?
谢谢
#!/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
Run Code Online (Sandbox Code Playgroud)
您无需手动检查返回代码。只需将命令连接起来||就可以了
#!/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
Run Code Online (Sandbox Code Playgroud)
||仅当前一个失败时才会执行以下命令。将其视为“命令之一必须成功”。如果第一个成功,您就可以了,不必检查以下内容。
&&仅当前一个成功时才会执行以下命令。将其视为“所有命令都必须成功”。如果第一个失败,您已经迷路了,不必检查以下内容。
在我看来,这个解决方案比公认的答案更清晰、更容易。