git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 2/2] rebase -i: do not leave a CHERRY_PICK_HEAD file behind

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jun 18, 2015, 11:44 UTC
Message-ID
<23bb1e151564cdc0249735b3c5f28ea441a5a907.1434627492.git.johannes.schindelin@gmx.de>
In-Reply-To
<cover.1434627492.git.johannes.schindelin@gmx.de>

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>
---
 git-rebase--interactive.sh    | 6 +++++-
 t/t3404-rebase-interactive.sh | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index dc3133f..5ff0f1c 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -849,7 +849,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
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index e5e7744..f3337ad 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -1102,7 +1102,7 @@ test_expect_success 'rebase -i commits that overwrite untracked files (no ff)' '
 	test $(git cat-file commit HEAD | sed -ne \$p) = I
 '
 
-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
-- 
2.3.1.windows.1.9.g8c01ab4
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 15 of 20 in “rebase -i might leave CHERRY_PICK_HEAD behind”
  1. SZEDER GáborJun 16, 2015
  2. Johannes SchindelinJun 16, 2015
  3. 0/2 rebase -i: Fix left-behind CHERRY_PICK_HEADJohannes Schindelin, Jun 17, 2015
  4. 1/2 t3404: demonstrate CHERRY_PICK_HEAD bugJohannes Schindelin, Jun 17, 2015
  5. Junio C HamanoJun 17, 2015
  6. Johannes SchindelinJun 18, 2015
  7. Junio C HamanoJun 18, 2015
  8. Johannes SchindelinJun 18, 2015
  9. 2/2 rebase -i: do not leave a CHERRY_PICK_HEAD file behindJohannes Schindelin, Jun 17, 2015
  10. SZEDER GáborJun 17, 2015
  11. Johannes SchindelinJun 17, 2015
  12. Junio C HamanoJun 17, 2015
  13. 0/2 rebase -i: Fix left-behind CHERRY_PICK_HEADJohannes Schindelin, Jun 18, 2015
  14. 1/2 t3404: demonstrate CHERRY_PICK_HEAD bugJohannes Schindelin, Jun 18, 2015
  15. 2/2 rebase -i: do not leave a CHERRY_PICK_HEAD file behindJohannes Schindelin, Jun 18, 2015
  16. 0/2 rebase -i: Fix left-behind CHERRY_PICK_HEADJohannes Schindelin, Jun 18, 2015
  17. 1/2 t3404: demonstrate CHERRY_PICK_HEAD bugJohannes Schindelin, Jun 18, 2015
  18. 2/2 rebase -i: do not leave a CHERRY_PICK_HEAD file behindJohannes Schindelin, Jun 18, 2015
  19. Junio C HamanoJun 18, 2015
  20. Johannes SchindelinJun 18, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.