download_and_compile.sh: fix the order of operations in _gitUpdate()
_gitUpdate() used to call 'git pull' then 'git checkout'. If the latter
command really did a branch switch, this could leave the local branch
behind its remote counterpart (that was hopefully fetched by the
'git pull'). From now on, we do:
git fetch origin
git checkout --force "$branch"
git pull --rebase
(the --force option was already there before in the form of -f). This
way, we can be sure that the local branch we check out is up-to-date
when the function returns.
Also replace short options by long ones for better readability of the
code, and use Bash's [[ ... ]] conditional construct instead of [ ... ]
for more efficiency---I think.
Note: 'git stash save' is documented as deprecated in favor of
'git stash push', however the latter appears to have been
introduced in 2017, therefore I believe it is too early to use it
in download_and_compile.sh.
This commit is contained in:
@@ -260,19 +260,22 @@ function _gitUpdate(){
|
||||
if [ "$DOWNLOAD" != "y" ]; then
|
||||
return
|
||||
fi
|
||||
branch="$1"
|
||||
|
||||
local branch="$1"
|
||||
set +e
|
||||
git diff --exit-code 2>&1 > /dev/null
|
||||
if [ $? != 1 ]; then
|
||||
if [[ $? != 1 ]]; then
|
||||
set -e
|
||||
git pull -r
|
||||
git checkout -f "$branch"
|
||||
git fetch origin
|
||||
git checkout --force "$branch"
|
||||
git pull --rebase
|
||||
else
|
||||
set -e
|
||||
git stash save -u -q
|
||||
git pull -r
|
||||
git checkout -f "$branch"
|
||||
git stash pop -q
|
||||
git fetch origin
|
||||
git stash save --include-untracked --quiet
|
||||
git checkout --force "$branch"
|
||||
git pull --rebase
|
||||
git stash pop --quiet
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user