diff options
author | Wincent Colaiuta <win@wincent.com> | 2007-11-28 00:06:36 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-11-30 13:55:49 -0800 |
commit | 804c7174c9d7c81b5215bcd9002f3bd600ecb6e4 (patch) | |
tree | 138b93dbc0115d90ea5c20da4ff6a0b7c63c5bba | |
parent | d25430c5f88c7e7b4ce24c1b08e409f4345c4eb9 (diff) | |
download | git-804c7174c9d7c81b5215bcd9002f3bd600ecb6e4.tar.gz git-804c7174c9d7c81b5215bcd9002f3bd600ecb6e4.tar.xz |
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.
[jc: this is heavily modified from the original but should be equivalent
in spirit]
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin-revert.c | 33 | ||||
-rwxr-xr-x | git-rebase--interactive.sh | 5 |
2 files changed, 28 insertions, 10 deletions
diff --git a/builtin-revert.c b/builtin-revert.c index a0586f975..4f86178bb 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 e9cd6fd99..beeefec0e 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 } |