summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2015-06-18 16:38:44 (GMT)
committerJunio C Hamano <gitster@pobox.com>2015-06-29 20:11:37 (GMT)
commitd17ec3a9daffd7f525f39b52011dc653afcbd275 (patch)
treeb6d981f4a488c82a5e988265166fa9091aa2f615
parentfdf96a20acf96a6ac538df8113b2aafd6ed71d50 (diff)
downloadgit-d17ec3a9daffd7f525f39b52011dc653afcbd275.zip
git-d17ec3a9daffd7f525f39b52011dc653afcbd275.tar.gz
git-d17ec3a9daffd7f525f39b52011dc653afcbd275.tar.bz2
t3404: demonstrate CHERRY_PICK_HEAD bug
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>
-rwxr-xr-xt/t3404-rebase-interactive.sh21
1 files changed, 21 insertions, 0 deletions
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 8197ed2..0fb87dc 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -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