summaryrefslogtreecommitdiff
path: root/t/t3404-rebase-interactive.sh
diff options
context:
space:
mode:
authorChris Webb <chris@arachsys.com>2012-07-24 13:17:03 +0100
committerJunio C Hamano <gitster@pobox.com>2012-07-24 09:03:33 -0700
commit2147f844ed13fa5052161d38f8cf7dca6f83c06e (patch)
tree6842a14d47b281ce5bc8f3ade1f0589485c35bf5 /t/t3404-rebase-interactive.sh
parent994fd91d1fd5e9feffc88ab7db19e9c9461b4543 (diff)
downloadgit-2147f844ed13fa5052161d38f8cf7dca6f83c06e.tar.gz
rebase -i: handle fixup of root commit correctly
There is a bug with git rebase -i --root when a fixup or squash line is applied to the new root. We attempt to amend the commit onto which they apply with git reset --soft HEAD^ followed by a normal commit. Unlike a real commit --amend, this sequence will fail against a root commit as it has no parent. Fix rebase -i to use commit --amend for fixup and squash instead, and add a test for the case of a fixup of the root commit. Signed-off-by: Chris Webb <chris@arachsys.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t3404-rebase-interactive.sh')
-rwxr-xr-xt/t3404-rebase-interactive.sh8
1 files changed, 8 insertions, 0 deletions
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 060f9d87d2..ef2d631379 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -786,4 +786,12 @@ test_expect_success 'rebase -i --root temporary sentinel commit' '
git rebase --abort
'
+test_expect_success 'rebase -i --root fixup root commit' '
+ git checkout B &&
+ FAKE_LINES="1 fixup 2" git rebase -i --root &&
+ test A = $(git cat-file commit HEAD | sed -ne \$p) &&
+ test B = $(git show HEAD:file1) &&
+ test 0 = $(git cat-file commit HEAD | grep -c ^parent\ )
+'
+
test_done