Update is now true to its word :rage1:

The update mechanism updates master only. If you are working in branch
foo, the branch name is saved and restored later. First attempt a naive
git pull --rebase origin master, and if that fails, abort the rebase,
fetch origin master, reset to head and clean directory.
This commit is contained in:
Jorge Bucaran 2016-02-24 23:59:55 +09:00
parent b67dd2edf1
commit e1e49ceaff
No known key found for this signature in database
GPG key ID: E54BA3C0E646DB30
2 changed files with 21 additions and 17 deletions

View file

@ -1,10 +1,28 @@
function __fisher_path_update -a path
pushd $path
set -l branch
if not set branch (sed "s|.*/||" < .git/HEAD)
return 1
end
git checkout master --quiet
git stash --quiet ^ /dev/null
git pull --rebase origin master --quiet
if not git pull --rebase origin master --quiet ^ /dev/null
git rebase --abort
git fetch origin master --quiet
git reset --hard FETCH_HEAD --quiet
git clean -d --force --quiet
end
git stash apply --quiet ^ /dev/null
if test ! -z "$branch"
git checkout "$branch" --quiet
end
popd
end

View file

@ -1,26 +1,12 @@
set -g path $DIRNAME/.t-$TESTNAME-(random)
function -S setup
mkdir -p $path/foo
function git
if test (pwd) = $path/foo
switch "$argv"
case "checkout master --quiet"
printf checkout-
case "pull --rebase origin master --quiet"
printf pull-rebase
end
end
end
end
function -S teardown
functions -e git
rm -rf $path
end
test "$TESTNAME - Use Git to update given path"
"checkout-pull-rebase" = (__fisher_path_update $path/foo)
test "$TESTNAME - Update Git repo at path"
-z ""
end