Скрипт Bash, использующий Git только для обновления - PullRequest
1 голос
/ 27 апреля 2019

У меня есть скрипт 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

1 Ответ

1 голос
/ 27 апреля 2019

Оформление должно работать

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

Это лучше не запускать на окнах, потому что он будет отклонять перезапись скрипта во время его работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...