]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t3404: demonstrate CHERRY_PICK_HEAD bug
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 18 Jun 2015 16:38:44 +0000 (18:38 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 29 Jun 2015 20:11:37 +0000 (13:11 -0700)
When rev-list's --cherry option does not detect that a patch has already
been applied upstream, an interactive rebase would offer to reapply it and
consequently stop at that patch with a failure, mentioning that the diff
is empty.

Traditionally, a `git rebase --continue` simply skips the commit in such a
situation.

However, as pointed out by Gábor Szeder, this leaves a CHERRY_PICK_HEAD
behind, making the Git prompt believe that a cherry pick is still going
on. This commit adds a test case demonstrating this bug.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t3404-rebase-interactive.sh

index 8197ed29a9ecedb43679200f1485a7b50984fdff..0fb87dc716e8501bc39f4c23cb4de5e5887d0e1b 100755 (executable)
@@ -1039,4 +1039,25 @@ test_expect_success 'short SHA-1 collide' '
        )
 '
 
+test_expect_failure 'rebase --continue removes CHERRY_PICK_HEAD' '
+       git checkout -b commit-to-skip &&
+       for double in X 3 1
+       do
+               test_seq 5 | sed "s/$double/&&/" >seq &&
+               git add seq &&
+               test_tick &&
+               git commit -m seq-$double
+       done &&
+       git tag seq-onto &&
+       git reset --hard HEAD~2 &&
+       git cherry-pick seq-onto &&
+       set_fake_editor &&
+       test_must_fail env FAKE_LINES= git rebase -i seq-onto &&
+       test -d .git/rebase-merge &&
+       git rebase --continue &&
+       git diff --exit-code seq-onto &&
+       test ! -d .git/rebase-merge &&
+       test ! -f .git/CHERRY_PICK_HEAD
+'
+
 test_done