*) usage;;
esac
-git fetch "${remote}"
+git remote update
+if git config remote.mob.fetch >/dev/null 2>/dev/null; then
+ git remote prune mob
+fi
if test `git rev-list .."${remote}/${branch#refs/heads/}" -- | wc -l` = 0; then
echo "Current branch $lbranch is up to date."
exit 0
esac
fi
+no_changes () {
+ git diff-index --quiet --cached HEAD --ignore-submodules -- &&
+ git diff-files --quiet --ignore-submodules
+}
+
unclean=
-git rev-parse --verify HEAD > /dev/null && \
- git update-index --refresh && \
- git diff-files --quiet && \
- git diff-index --cached --quiet HEAD -- || unclean=t
+no_changes || unclean=t
+
case "$action" in
rebase)
test -z "$unclean" || git stash save "git-up stash"
git rebase "${remote}/${branch#refs/heads/}"
+ cd "$(dirname "$(git rev-parse --git-dir)")" && git submodule update --rebase
;;
merge)
test -z "$unclean" || git stash save "git-up stash"
echo ""
echo "run 'git stash apply' when rebase is finished"
else
- git stash apply
+ git stash pop
fi
fi