[PATCH] Fix git reset --abort not restoring the right commit under some conditions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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), modify ORIG_HEAD.

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

 > > ... and I'm even the one to blame
 > > fb6e4e1f3f048898677f3cf177bfcaf60123bd5c is first bad commit
 >
 > Heh, didn't you say you don't have enough knowledge in git-rebase? ;-)

 I'm relieved, I'm not exactly to blame ;) I just exposed the bug that was
 actually already here.

 git-rebase.sh           |    5 ++---
 t/t3407-rebase-abort.sh |    2 +-
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/git-rebase.sh b/git-rebase.sh
index bdcea0e..6b9af96 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 94bdd72..3417138 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
-- 
1.5.4.3.343.gb141c.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux