git rebase --abort: always restore the right commit
authorMike Hommey <mh@glandium.org>
Sat, 1 Mar 2008 10:32:14 +0000 (11:32 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sun, 2 Mar 2008 07:52:00 +0000 (23:52 -0800)
Previously, --abort would end by git resetting to ORIG_HEAD, but some
commands, such as git reset --hard (which happened in git rebase --skip,
but could just as well be typed by the user), would have already modified
ORIG_HEAD.

Just use the orig-head we store in $dotest instead.

Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-rebase.sh
t/t3407-rebase-abort.sh

index bdcea0e..6b9af96 100755 (executable)
@@ -208,16 +208,15 @@ do
                if test -d "$dotest"
                then
                        move_to_original_branch
-                       rm -r "$dotest"
                elif test -d .dotest
                then
                        dotest=.dotest
                        move_to_original_branch
-                       rm -r .dotest
                else
                        die "No rebase in progress?"
                fi
-               git reset --hard ORIG_HEAD
+               git reset --hard $(cat $dotest/orig-head)
+               rm -r "$dotest"
                exit
                ;;
        --onto)
index 94bdd72..3417138 100755 (executable)
@@ -29,7 +29,7 @@ test_expect_success 'rebase --abort' '
        test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase)
 '
 
-test_expect_failure 'rebase --abort after --skip' '
+test_expect_success 'rebase --abort after --skip' '
        # Clean up the state from the previous one
        git reset --hard pre-rebase
        rm -rf .dotest