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

[PATCH] Replace misleading message during interactive rebasing

From
Wincent Colaiuta <win@wincent.com>
Date
Nov 26, 2007, 21:18 UTC
Message-ID
<1196111891-18518-1-git-send-email-win@wincent.com>

git-rebase--interactive uses git-cherry-pick under the covers to reorder commits, which in turn means that in the event of a conflict a message will be shown advising the user to commit the results and use the -c switch to retain authorship after fixing the conflict.

The message is misleading because what the user really needs to do is run "git rebase --continue"; the committing is handled by git-rebase and the authorship of the commit message is retained automatically.

We solve this problem by using an environment variable to communicate to git-cherry-pick that rebasing is underway and replace the misleading error message with a more helpful one.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
---
This applies on top of "master".

The question of whether the environment variable should have a leading underscore came up on the mailing list. I don't really care at all either way, I'd just like to see the misleading message go away. I'll leave it up to others to decide.

Another thing to decide is whether the help text should be more than just "run 'git rebase --continue'", but should mention "git rebase --abort" as well. Junio, please feel free to modify the patch if you think it would be appropriate.

 builtin-revert.c           |    8 +++++---
 git-rebase--interactive.sh |    2 ++
 2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/builtin-revert.c b/builtin-revert.c
index a0586f9..5a57574 100644
--- a/builtin-revert.c
+++ b/builtin-revert.c
@@ -229,7 +229,7 @@ static int revert_or_cherry_pick(int argc, const char **argv)
 	unsigned char head[20];
 	struct commit *base, *next, *parent;
 	int i;
-	char *oneline, *reencoded_message = NULL;
+	char *oneline, *reencoded_message = NULL, *help_message;
 	const char *message, *encoding;
 	const char *defmsg = xstrdup(git_path("MERGE_MSG"));
 
@@ -352,11 +352,13 @@ 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);
+		help_message = getenv("_GIT_CHERRY_PICK_HELP");
 		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) {
+			"and %s.\n", me,
+			help_message ? help_message : "commit the result");
+		if (action == CHERRY_PICK && !help_message) {
 			fprintf(stderr, "When commiting, use the option "
 				"'-c %s' to retain authorship and message.\n",
 				find_unique_abbrev(commit->object.sha1,
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index bf44b6a..e5f9810 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -117,6 +117,7 @@ pick_one () {
 		sha1=$(git rev-parse --short $sha1)
 		output warn Fast forward to $sha1
 	else
+		export _GIT_CHERRY_PICK_HELP="run 'git rebase --continue'"
 		output git cherry-pick "$@"
 	fi
 }
@@ -187,6 +188,7 @@ pick_one_preserving_merges () {
 			fi
 			;;
 		*)
+			export _GIT_CHERRY_PICK_HELP="run 'git rebase --continue'"
 			output git cherry-pick "$@" ||
 				die_with_patch $sha1 "Could not pick $sha1"
 			;;
-- 
1.5.3.6.952.g84ef
Next: Johannes Sixt
Message 1 of 11 in “Replace misleading message during interactive rebasing”
  1. Replace misleading message during interactive rebasingWincent Colaiuta, Nov 26, 2007
  2. Johannes SixtNov 27, 2007
  3. Wincent ColaiutaNov 27, 2007
  4. Jeff KingNov 27, 2007
  5. Jakub NarebskiNov 27, 2007
  6. Jeff KingNov 27, 2007
  7. Jeff KingNov 27, 2007
  8. Junio C HamanoNov 28, 2007
  9. Wincent ColaiutaNov 28, 2007
  10. Johannes SchindelinNov 28, 2007
  11. Johannes SixtNov 28, 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.