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

[PATCH v2 0/2] rebase -i: Fix left-behind CHERRY_PICK_HEAD

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

These patches fix a bug that bites me often enough when rebasing Git for Windows.

The symptom is that .git/CHERRY_PICK_HEAD is left behind after skipping an already-merged patch with `git rebase --continue` instead of `git rebase --skip`. I always prefer the former invocation because the latter would also skip legitimate patches if there were merge conflicts, while the former would not allow that.

Changes since v1:
- no longer uses ':' to make the comment a no-op statement
- sets the fake editor correctly in the test (I verified that by
  rebasing onto v2.2.2 and running the test with and without setting the
  fake editor)
Interdiff below the diffstat.
Johannes Schindelin (2):
  t3404: demonstrate CHERRY_PICK_HEAD bug
  rebase -i: do not leave a CHERRY_PICK_HEAD file behind
 git-rebase--interactive.sh    |  6 +++++-
 t/t3404-rebase-interactive.sh | 21 +++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 16e0a82..5ff0f1c 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -849,7 +849,7 @@ continue)
 	# do we have anything to commit?
 	if git diff-index --cached --quiet HEAD --
 	then
-		: Nothing to commit -- skip this commit
+		# Nothing to commit -- skip this commit
 
 		test ! -f "$GIT_DIR"/CHERRY_PICK_HEAD ||
 		rm "$GIT_DIR"/CHERRY_PICK_HEAD ||
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 241d4d1..f3337ad 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -1114,7 +1114,8 @@ test_expect_success 'rebase --continue removes CHERRY_PICK_HEAD' '
 	git tag seq-onto &&
 	git reset --hard HEAD~2 &&
 	git cherry-pick seq-onto &&
-	test_must_fail git rebase -i seq-onto &&
+	set_fake_editor &&
+	FAKE_LINES= test_must_fail git rebase -i seq-onto &&
 	test -d .git/rebase-merge &&
 	git rebase --continue &&
 	git diff seq-onto &&
-- 
2.3.1.windows.1.9.g8c01ab4
Previous: Junio C HamanoNext: Johannes Schindelin
Message 13 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.