diff options
author | Ramkumar Ramachandra <artagnon@gmail.com> | 2014-05-19 18:05:20 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-05-19 15:36:24 -0700 |
commit | e4244eb3957d478ca05b42d8b56aadb9ab2bc7ae (patch) | |
tree | 67a4bb7b8c1b932542396f2501a7c32809ca78b9 /git-rebase.sh | |
parent | ac1998deddbb5b59c80f2a3d902e18b31fe9cc50 (diff) | |
download | git-e4244eb3957d478ca05b42d8b56aadb9ab2bc7ae.tar.gz |
rebase -i: handle "Nothing to do" case with autostash
When a user invokes
$ git rebase -i @~3
with dirty files and rebase.autostash turned on, and exits the $EDITOR
with an empty buffer, the autostash fails to apply. Although the primary
focus of rr/rebase-autostash was to get the git-rebase--backend.sh
scripts to return control to git-rebase.sh, it missed this case in
git-rebase--interactive.sh. Since this case is unlike the other cases
which return control for housekeeping, assign it a special return status
and handle that return value explicitly in git-rebase.sh.
Reported-by: Karen Etheridge <ether@cpan.org>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-rebase.sh')
-rwxr-xr-x | git-rebase.sh | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/git-rebase.sh b/git-rebase.sh index a28209daba..9eb276ba20 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -147,7 +147,7 @@ move_to_original_branch () { esac } -finish_rebase () { +apply_autostash () { if test -f "$state_dir/autostash" then stash_sha1=$(cat "$state_dir/autostash") @@ -166,6 +166,10 @@ You can run "git stash pop" or "git stash drop" at any time. ' fi fi +} + +finish_rebase () { + apply_autostash && git gc --auto && rm -rf "$state_dir" } @@ -181,6 +185,11 @@ run_specific_rebase () { 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 } |