]> git.ipfire.org Git - thirdparty/git.git/commitdiff
cherry-pick: do not error on non-merge commits when '-m 1' is specified
authorSergey Organov <sorganov@gmail.com>
Fri, 14 Dec 2018 04:53:51 +0000 (07:53 +0300)
committerJunio C Hamano <gitster@pobox.com>
Wed, 26 Dec 2018 22:43:22 +0000 (14:43 -0800)
When cherry-picking multiple commits, it's impossible to have both
merge- and non-merge commits on the same command-line. Not specifying
'-m 1' results in cherry-pick refusing to handle merge commits, while
specifying '-m 1' fails on non-merge commits.

This patch allows '-m 1' for non-merge commits. As mainline is always
the only parent for a non-merge commit, it makes little sense to
disable it.

Signed-off-by: Sergey Organov <sorganov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sequencer.c

index e1a4dd15f1a826c7bd1bf4780c8f85c21117c43b..d0fd61b0b3b7994b8527a6a3d7ac778db9f5610a 100644 (file)
@@ -1766,9 +1766,13 @@ static int do_pick_commit(enum todo_command command, struct commit *commit,
                        return error(_("commit %s does not have parent %d"),
                                oid_to_hex(&commit->object.oid), opts->mainline);
                parent = p->item;
-       } else if (0 < opts->mainline)
-               return error(_("mainline was specified but commit %s is not a merge."),
-                       oid_to_hex(&commit->object.oid));
+       } else if (1 < opts->mainline)
+               /*
+                *  Non-first parent explicitly specified as mainline for
+                *  non-merge commit
+                */
+               return error(_("commit %s does not have parent %d"),
+                            oid_to_hex(&commit->object.oid), opts->mainline);
        else
                parent = commit->parents->item;