cherry-pick/revert: Use advise() for hints
[gitweb.git] / builtin / revert.c
index 74c1581fdc73129e61c2ade90701900586e3ee82..7f35cc6e1734c4000d8971f808356d0fb344ffc6 100644 (file)
@@ -250,27 +250,21 @@ static void advise(const char *advice, ...)
        va_end(params);
 }
 
-static char *help_msg(void)
+static void print_advice(void)
 {
-       struct strbuf helpbuf = STRBUF_INIT;
        char *msg = getenv("GIT_CHERRY_PICK_HELP");
 
-       if (msg)
-               return msg;
+       if (msg) {
+               fprintf(stderr, "%s\n", msg);
+               return;
+       }
 
-       strbuf_addstr(&helpbuf, "  After resolving the conflicts,\n"
-               "mark the corrected paths with 'git add <paths>' or 'git rm <paths>'\n"
-               "and commit the result");
+       advise("after resolving the conflicts, mark the corrected paths");
+       advise("with 'git add <paths>' or 'git rm <paths>'");
 
-       if (action == CHERRY_PICK) {
-               strbuf_addf(&helpbuf, " with: \n"
-                       "\n"
-                       "        git commit -c %s\n",
-                           sha1_to_hex(commit->object.sha1));
-       }
-       else
-               strbuf_addch(&helpbuf, '.');
-       return strbuf_detach(&helpbuf, NULL);
+       if (action == CHERRY_PICK)
+               advise("and commit the result with 'git commit -c %s'",
+                      find_unique_abbrev(commit->object.sha1, DEFAULT_ABBREV));
 }
 
 static void write_message(struct strbuf *msgbuf, const char *filename)
@@ -404,7 +398,6 @@ static int do_pick_commit(void)
        struct commit_message msg = { NULL, NULL, NULL, NULL, NULL };
        char *defmsg = NULL;
        struct strbuf msgbuf = STRBUF_INIT;
-       struct strbuf mebuf = STRBUF_INIT;
        int res;
 
        if (no_commit) {
@@ -501,9 +494,6 @@ static int do_pick_commit(void)
                }
        }
 
-       strbuf_addf(&mebuf, "%s of commit %s", me,
-                   find_unique_abbrev(commit->object.sha1, DEFAULT_ABBREV));
-
        if (!strategy || !strcmp(strategy, "recursive") || action == REVERT) {
                res = do_recursive_merge(base, next, base_label, next_label,
                                         head, &msgbuf);
@@ -512,7 +502,6 @@ static int do_pick_commit(void)
                struct commit_list *common = NULL;
                struct commit_list *remotes = NULL;
 
-               strbuf_addf(&mebuf, " with strategy %s", strategy);
                write_message(&msgbuf, defmsg);
 
                commit_list_insert(base, &common);
@@ -524,15 +513,17 @@ static int do_pick_commit(void)
        }
 
        if (res) {
-               fprintf(stderr, "Automatic %s failed.%s\n",
-                       mebuf.buf, help_msg());
+               error("could not %s %s... %s",
+                     action == REVERT ? "revert" : "apply",
+                     find_unique_abbrev(commit->object.sha1, DEFAULT_ABBREV),
+                     msg.subject);
+               print_advice();
                rerere(allow_rerere_auto);
        } else {
                if (!no_commit)
                        res = run_git_commit(defmsg);
        }
 
-       strbuf_release(&mebuf);
        free_message(&msg);
        free(defmsg);