revert: Don't check lone argument in get_encoding
[gitweb.git] / builtin / revert.c
index f697e6695374d06e7b08c9faac1ebaefe4ff31d7..30b39c040c463eb7b64c061be2197df43e60c019 100644 (file)
@@ -167,9 +167,6 @@ static char *get_encoding(const char *message)
 {
        const char *p = message, *eol;
 
-       if (!p)
-               die (_("Could not read commit message of %s"),
-                               sha1_to_hex(commit->object.sha1));
        while (*p && *p != '\n') {
                for (eol = p + 1; *eol && *eol != '\n'; eol++)
                        ; /* do nothing */
@@ -185,19 +182,6 @@ static char *get_encoding(const char *message)
        return NULL;
 }
 
-static void add_message_to_msg(struct strbuf *msgbuf, const char *message)
-{
-       const char *p = message;
-       while (*p && (*p != '\n' || p[1] != '\n'))
-               p++;
-
-       if (!*p)
-               strbuf_addstr(msgbuf, sha1_to_hex(commit->object.sha1));
-
-       p += 2;
-       strbuf_addstr(msgbuf, p);
-}
-
 static void write_cherry_pick_head(void)
 {
        int fd;
@@ -214,15 +198,6 @@ static void write_cherry_pick_head(void)
        strbuf_release(&buf);
 }
 
-static void advise(const char *advice, ...)
-{
-       va_list params;
-
-       va_start(params, advice);
-       vreportf("hint: ", advice, params);
-       va_end(params);
-}
-
 static void print_advice(void)
 {
        char *msg = getenv("GIT_CHERRY_PICK_HELP");
@@ -408,8 +383,6 @@ static int do_pick_commit(void)
        discard_cache();
 
        if (!commit->parents) {
-               if (action == REVERT)
-                       die (_("Cannot revert a root commit"));
                parent = NULL;
        }
        else if (commit->parents->next) {
@@ -467,17 +440,30 @@ static int do_pick_commit(void)
                strbuf_addstr(&msgbuf, "\"\n\nThis reverts commit ");
                strbuf_addstr(&msgbuf, sha1_to_hex(commit->object.sha1));
 
-               if (commit->parents->next) {
+               if (commit->parents && commit->parents->next) {
                        strbuf_addstr(&msgbuf, ", reversing\nchanges made to ");
                        strbuf_addstr(&msgbuf, sha1_to_hex(parent->object.sha1));
                }
                strbuf_addstr(&msgbuf, ".\n");
        } else {
+               const char *p;
+
                base = parent;
                base_label = msg.parent_label;
                next = commit;
                next_label = msg.label;
-               add_message_to_msg(&msgbuf, msg.message);
+
+               /*
+                * Append the commit log message to msgbuf; it starts
+                * after the tree, parent, author, committer
+                * information followed by "\n\n".
+                */
+               p = strstr(msg.message, "\n\n");
+               if (p) {
+                       p += 2;
+                       strbuf_addstr(&msgbuf, p);
+               }
+
                if (no_replay) {
                        strbuf_addstr(&msgbuf, "(cherry picked from commit ");
                        strbuf_addstr(&msgbuf, sha1_to_hex(commit->object.sha1));