summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Mike Hommey <mh@glandium.org>2008-03-01 11:32:14 +0100
committerLibravatar Junio C Hamano <gitster@pobox.com>2008-03-01 23:52:00 -0800
commit48411d2233aec65b612ac2b1f50540ec60f0f568 (patch)
tree8500192f915d3cf5836015a3057f939738ad679d
parentDocumentation/git-rebase.txt: Add --strategy to synopsys (diff)
downloadtgif-48411d2233aec65b612ac2b1f50540ec60f0f568.tar.xz
git rebase --abort: always restore the right commit
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>
-rwxr-xr-xgit-rebase.sh5
-rwxr-xr-xt/t3407-rebase-abort.sh2
2 files changed, 3 insertions, 4 deletions
diff --git a/git-rebase.sh b/git-rebase.sh
index bdcea0ed70..6b9af962a9 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -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)
diff --git a/t/t3407-rebase-abort.sh b/t/t3407-rebase-abort.sh
index 94bdd72330..3417138a80 100755
--- a/t/t3407-rebase-abort.sh
+++ b/t/t3407-rebase-abort.sh
@@ -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