To check out the original branch and stop rebasing, run "git rebase --abort".')
"
unset onto
+unset restrict_revision
cmd=
strategy=
strategy_opts=
esac
}
-finish_rebase () {
+apply_autostash () {
if test -f "$state_dir/autostash"
then
stash_sha1=$(cat "$state_dir/autostash")
'
fi
fi
+}
+
+finish_rebase () {
+ apply_autostash &&
git gc --auto &&
rm -rf "$state_dir"
}
if test $ret -eq 0
then
finish_rebase
+ elif test $ret -eq 2 # special exit status for rebase -i
+ then
+ apply_autostash &&
+ rm -rf "$state_dir" &&
+ die "Nothing to do"
fi
exit $ret
}
"${switch_to:-HEAD}")
if test -n "$new_upstream"
then
- upstream=$new_upstream
+ restrict_revision=$new_upstream
fi
fi
# and if this is not an interactive rebase.
mb=$(git merge-base "$onto" "$orig_head")
if test "$type" != interactive && test "$upstream" = "$onto" &&
- test "$mb" = "$onto" &&
+ test "$mb" = "$onto" && test -z "$restrict_revision" &&
# linear history?
! (git rev-list --parents "$onto".."$orig_head" | sane_grep " .* ") > /dev/null
then
then
revisions="$onto..$orig_head"
else
- revisions="$upstream..$orig_head"
+ revisions="${restrict_revision-$upstream}..$orig_head"
fi
run_specific_rebase