У меня есть скрипт bash, который обновляется довольно часто, и я хотел бы, чтобы самообновление выполнялось только с помощью git, но не затрагивало ничего.
Я нашел Пример скрипта он обновляется сам, но использует 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