使用Git自行更新的Bash脚本

时间:2019-04-26 22:04:49

标签: bash git

我有一个bash脚本,该脚本经常更新,因此我只想使用git自我更新,而不影响其他任何东西。

我发现一个Example Script会自我更新,但是它使用git pull --force来更新所有内容。在大多数情况下,这应该没问题,但我会自动执行可能会产生意想不到的后果,更安全地仅影响自身的事情。

我尝试修改该脚本以使用checkout或cherry-pick的尝试均未成功。

有人能只更新$ 0或可以写一个吗?

编辑: 这是我为脚本编写的凌乱代码。

#!/bin/bash


BRANCH="master"
SCRIPTNAME=$1
REPOSITORY="https://stash.xxx/projects/IT/repos/xxx/browse/$SCRIPTNAME"

self_update() {

git fetch

if  [[ -n $(git diff --name-only origin/$BRANCH | grep $SCRIPTNAME) ]]
then
echo The version you have and the version on stash are different
echo
echo Do you want to:
echo
echo s. Show messy differences
echo c. Open repository in Chrome
echo
echo d. Download the stash version, overwrite your current version, and exit script
echo
echo q. return to the previous menu

read choice
case $choice in
s)
git diff origin/$BRANCH
echo
read -p "Enter to Return " enterkey
;;
c)
open -a "/Applications/Google Chrome.app"  "$REPOSITORY"
;;
d)
git checkout -f origin/$BRANCH -- $SCRIPTNAME

#head -5 $SCRIPTNAME
exit
;;
q)
break
;;
*)
echo Please enter one of the choices.
;;
esac

else
echo You are using the current version of $SCRIPTNAME
break
fi

}


#testing code
head -5 $SCRIPTNAME

while :
do
self_update
done

head -5 $SCRIPTNAME

1 个答案:

答案 0 :(得分:1)

结帐应该可以

git fetch the-remote
git checkout  the-remote/the-branch -- the-file.sh

最好不要在Windows上运行,因为它将在运行时拒绝重写脚本。