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

Re: Rebase/cherry-picking idea

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 28, 2007, 08:06 UTC
Message-ID
<7vir3m94ku.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<97F6E8DE-4022-4458-B6A9-C644A6EDC1E3@wincent.com>
> Once I get a clear idea of what kind of change is likely to actually  
> get accepted I'll submit a proper patch.

Too often, people disappear with a patch that is basically good but has room for improvements this way. I really do not have time nor bandwidth to keep bugging them for updates, and often end up cleaning up on my own instead.

This is such a patch, and without acks or comments, it is also very likely to be lost.

-- >8 -- revert/cherry-pick: Allow overriding the help text by the calling Porcelain

A Porcelain command that uses cherry-pick or revert may make a commit out of resolved index itself, in which case telling the user to commit the result is not appropriate at all. This allows GIT_CHERRY_PICK_HELP environment variable to be set by the calling Porcelain in order to override the built-in help text.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 * I suspect that "git rebase --continue" can do "git add -u" itself,
   just like recent "git rebase --skip" would do "git reset --hard".
   The overriding help text in this patch can lose its second line that
   tells the user to use "git add <paths>" if we decide to do so.
 builtin-revert.c           |   33 +++++++++++++++++++++++----------
 git-rebase--interactive.sh |    5 +++++
 2 files changed, 28 insertions(+), 10 deletions(-)
diff --git a/builtin-revert.c b/builtin-revert.c
index a0586f9..4f86178 100644
--- a/builtin-revert.c
+++ b/builtin-revert.c
@@ -224,6 +224,27 @@ static int merge_recursive(const char *base_sha1,
 	return run_command_v_opt(argv, RUN_COMMAND_NO_STDIN | RUN_GIT_CMD);
 }
 
+static char *help_msg(const unsigned char *sha1)
+{
+	static char helpbuf[1024];
+	char *msg = getenv("GIT_CHERRY_PICK_HELP");
+
+	if (msg)
+		return msg;
+
+	strcpy(helpbuf, "  After resolving the conflicts,\n"
+	       "mark the corrected paths with 'git add <paths>' "
+	       "and commit the result.");
+
+	if (action == CHERRY_PICK) {
+		sprintf(helpbuf + strlen(helpbuf),
+			"\nWhen commiting, use the option "
+			"'-c %s' to retain authorship and message.",
+			find_unique_abbrev(sha1, DEFAULT_ABBREV));
+	}
+	return helpbuf;
+}
+
 static int revert_or_cherry_pick(int argc, const char **argv)
 {
 	unsigned char head[20];
@@ -352,16 +373,8 @@ static int revert_or_cherry_pick(int argc, const char **argv)
 		}
 		if (close(msg_fd) || commit_lock_file(&msg_file) < 0)
 			die ("Error wrapping up %s", defmsg);
-		fprintf(stderr, "Automatic %s failed.  "
-			"After resolving the conflicts,\n"
-			"mark the corrected paths with 'git add <paths>' "
-			"and commit the result.\n", me);
-		if (action == CHERRY_PICK) {
-			fprintf(stderr, "When commiting, use the option "
-				"'-c %s' to retain authorship and message.\n",
-				find_unique_abbrev(commit->object.sha1,
-					DEFAULT_ABBREV));
-		}
+		fprintf(stderr, "Automatic %s failed.%s\n",
+			me, help_msg(commit->object.sha1));
 		exit(1);
 	}
 	if (close(msg_fd) || commit_lock_file(&msg_file) < 0)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index bf44b6a..33a5d4b 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -30,6 +30,11 @@ test -d "$REWRITTEN" && PRESERVE_MERGES=t
 test -f "$DOTEST"/strategy && STRATEGY="$(cat "$DOTEST"/strategy)"
 test -f "$DOTEST"/verbose && VERBOSE=t
 
+GIT_CHERRY_PICK_HELP="  After resolving the conflicts,
+mark the corrected paths with 'git add <paths>', and
+run 'git rebase --continue'"
+export GIT_CHERRY_PICK_HELP
+
 warn () {
 	echo "$*" >&2
 }
Previous: Wincent ColaiutaNext: Wincent Colaiuta
Message 10 of 43 in “Rebase/cherry-picking idea”
  1. Wincent ColaiutaNov 26, 2007
  2. Benoit SigoureNov 26, 2007
  3. Wincent ColaiutaNov 26, 2007
  4. Wincent ColaiutaNov 26, 2007
  5. Benoit SigoureNov 26, 2007
  6. Johannes SixtNov 26, 2007
  7. Wincent ColaiutaNov 26, 2007
  8. Johannes SchindelinNov 26, 2007
  9. Wincent ColaiutaNov 26, 2007
  10. Junio C HamanoNov 28, 2007
  11. Wincent ColaiutaNov 28, 2007
  12. Junio C HamanoNov 28, 2007
  13. Wincent ColaiutaNov 28, 2007
  14. Replace instances of export VAR=VAL with VAR=VAL; export VARJohannes Schindelin, Nov 28, 2007
  15. David KastrupNov 28, 2007
  16. Nguyen Thai Ngoc DuyNov 28, 2007
  17. David KastrupNov 28, 2007
  18. Nguyen Thai Ngoc DuyNov 28, 2007
  19. Johannes SchindelinNov 28, 2007
  20. Johannes SchindelinNov 28, 2007
  21. Johannes SixtNov 28, 2007
  22. Johannes SchindelinNov 28, 2007
  23. Johannes SixtNov 28, 2007
  24. Replace instances of export VAR=VAL with VAR=VAL; export VARJohannes Schindelin, Nov 28, 2007
  25. David KastrupNov 28, 2007
  26. Junio C HamanoNov 28, 2007
  27. David KastrupNov 28, 2007
  28. Jeff KingNov 28, 2007
  29. David KastrupNov 28, 2007
  30. Johannes SixtNov 29, 2007
  31. David KastrupNov 29, 2007
  32. Johannes SchindelinNov 28, 2007
  33. Junio C HamanoNov 28, 2007
  34. Johannes SchindelinNov 28, 2007
  35. Junio C HamanoNov 28, 2007
  36. Johannes SchindelinNov 28, 2007
  37. David KastrupNov 28, 2007
  38. Junio C HamanoNov 28, 2007
  39. Junio C HamanoNov 26, 2007
  40. Marco CostalbaNov 26, 2007
  41. Shawn O. PearceNov 27, 2007
  42. Junio C HamanoNov 27, 2007
  43. Johannes SchindelinNov 26, 2007

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.