OSDN Git Service

merge: decide if we auto-generate the message early in collect_parents()
authorJunio C Hamano <gitster@pobox.com>
Sun, 26 Apr 2015 01:39:43 +0000 (18:39 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 29 Apr 2015 20:26:03 +0000 (13:26 -0700)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/merge.c

index 9f98538..eb3be68 100644 (file)
@@ -1098,6 +1098,10 @@ static struct commit_list *collect_parents(struct commit *head_commit,
        int i;
        struct commit_list *remoteheads = NULL;
        struct commit_list **remotes = &remoteheads;
+       struct strbuf merge_names = STRBUF_INIT, *autogen = NULL;
+
+       if (merge_msg && (!have_message || shortlog_len))
+               autogen = &merge_names;
 
        if (head_commit)
                remotes = &commit_list_insert(head_commit, remotes)->next;
@@ -1111,15 +1115,13 @@ static struct commit_list *collect_parents(struct commit *head_commit,
 
        remoteheads = reduce_parents(head_commit, head_subsumed, remoteheads);
 
-       if (merge_msg &&
-           (!have_message || shortlog_len)) {
-               struct strbuf merge_names = STRBUF_INIT;
+       if (autogen) {
                struct commit_list *p;
-
                for (p = remoteheads; p; p = p->next)
-                       merge_name(merge_remote_util(p->item)->name, &merge_names);
-               prepare_merge_message(&merge_names, merge_msg);
-               strbuf_release(&merge_names);
+                       merge_name(merge_remote_util(p->item)->name, autogen);
+
+               prepare_merge_message(autogen, merge_msg);
+               strbuf_release(autogen);
        }
 
        return remoteheads;