我在编写端到端测试之前编写脚本来执行任务。其中一个步骤是选择编写这些测试的分支。有时脚本会在不同的分支之间发生变化,所以我需要脚本在实际执行之前自行更新。
我的git存储库中的bash脚本是否可以自行更新并仅执行新版本?
总结:当我执行script.sh
时,我希望它检查git是否有新版本可用,如果有,请下载此新版本并在旧版本完全死亡时执行它。
答案 0 :(得分:6)
这是我提出的脚本:
#!/bin/bash
SCRIPT=$(readlink -f "$0")
SCRIPTPATH=$(dirname "$SCRIPT")
SCRIPTNAME="$0"
ARGS="$@"
BRANCH="Your_git_branch"
self_update() {
cd $SCRIPTPATH
git fetch
[ -n $(git diff --name-only origin/$BRANCH | grep $SCRIPTNAME) ] && {
echo "Found a new version of me, updating myself..."
git pull --force
git checkout $BRANCH
git pull --force
echo "Running the new version..."
exec "$SCRIPTNAME" "$@"
# Now exit this old instance
exit 1
}
echo "Already the latest version."
}
main() {
echo "Running"
}
self_update
main