diff options
| author | Junio C Hamano <gitster@pobox.com> | 2015-04-25 18:34:22 -0700 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2015-04-29 13:24:40 -0700 | 
| commit | 1cf32f4d54d7db0da9b2fb35cdd277f9ab7ae0af (patch) | |
| tree | 1196f256f830378ed4e1fdd5c7d6414a5a2f80b8 | |
| parent | 52fecab20cf28f4b5621e502a265ba551a26877e (diff) | |
merge: make collect_parents() auto-generate the merge message
Signed-off-by: Junio C Hamano <gitster@pobox.com>
| -rw-r--r-- | builtin/merge.c | 36 | 
1 files changed, 22 insertions, 14 deletions
diff --git a/builtin/merge.c b/builtin/merge.c index a972ed6422..9f9853876b 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1092,7 +1092,8 @@ static void prepare_merge_message(struct strbuf *merge_names, struct strbuf *mer  static struct commit_list *collect_parents(struct commit *head_commit,  					   int *head_subsumed, -					   int argc, const char **argv) +					   int argc, const char **argv, +					   struct strbuf *merge_msg)  {  	int i;  	struct commit_list *remoteheads = NULL; @@ -1108,7 +1109,20 @@ static struct commit_list *collect_parents(struct commit *head_commit,  		remotes = &commit_list_insert(commit, remotes)->next;  	} -	return reduce_parents(head_commit, head_subsumed, remoteheads); +	remoteheads = reduce_parents(head_commit, head_subsumed, remoteheads); + +	if (merge_msg && +	    (!have_message || shortlog_len)) { +		struct strbuf merge_names = STRBUF_INIT; +		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); +	} + +	return remoteheads;  }  int cmd_merge(int argc, const char **argv, const char *prefix) @@ -1222,7 +1236,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)  		if (fast_forward == FF_NO)  			die(_("Non-fast-forward commit does not make sense into "  			    "an empty head")); -		remoteheads = collect_parents(head_commit, &head_subsumed, argc, argv); +		remoteheads = collect_parents(head_commit, &head_subsumed, +					      argc, argv, NULL);  		remote_head = remoteheads->item;  		if (!remote_head)  			die(_("%s - not something we can merge"), argv[0]); @@ -1248,7 +1263,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)  		head_arg = argv[1];  		argv += 2;  		argc -= 2; -		remoteheads = collect_parents(head_commit, &head_subsumed, argc, argv); +		remoteheads = collect_parents(head_commit, &head_subsumed, +					      argc, argv, NULL);  	} else {  		/* We are invoked directly as the first-class UI. */  		head_arg = "HEAD"; @@ -1258,16 +1274,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)  		 * the standard merge summary message to be appended  		 * to the given message.  		 */ -		remoteheads = collect_parents(head_commit, &head_subsumed, argc, argv); - -		if (!have_message || shortlog_len) { -			struct strbuf merge_names = STRBUF_INIT; - -			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); -		} +		remoteheads = collect_parents(head_commit, &head_subsumed, +					      argc, argv, &merge_msg);  	}  	if (!head_commit || !argc)  | 
