rebase -i: do not leave a CHERRY_PICK_HEAD file behind
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 18 Jun 2015 16:38:53 +0000 (18:38 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 29 Jun 2015 20:12:43 +0000 (13:12 -0700)
When skipping commits whose changes were already applied via `git rebase
--continue`, we need to clean up said file explicitly.

The same is not true for `git rebase --skip` because that will execute
`git reset --hard` as part of the "skip" handling in git-rebase.sh, even
before git-rebase--interactive.sh is called.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-rebase--interactive.sh
t/t3404-rebase-interactive.sh
index b64dd28acf86e0b3075a638ae3419fb3a79a1815..3b361229b75317359c90f854cf19e3853349e382 100644 (file)
@@ -836,7 +836,11 @@ continue)
        # do we have anything to commit?
        if git diff-index --cached --quiet HEAD --
        then
-               : Nothing to commit -- skip this
+               # Nothing to commit -- skip this commit
+
+               test ! -f "$GIT_DIR"/CHERRY_PICK_HEAD ||
+               rm "$GIT_DIR"/CHERRY_PICK_HEAD ||
+               die "Could not remove CHERRY_PICK_HEAD"
        else
                if ! test -f "$author_script"
                then
index 0fb87dc716e8501bc39f4c23cb4de5e5887d0e1b..914020176dd00baac3229aa285733a14b9e20470 100755 (executable)
@@ -1039,7 +1039,7 @@ test_expect_success 'short SHA-1 collide' '
        )
 '
 
-test_expect_failure 'rebase --continue removes CHERRY_PICK_HEAD' '
+test_expect_success 'rebase --continue removes CHERRY_PICK_HEAD' '
        git checkout -b commit-to-skip &&
        for double in X 3 1
        do