Skip to content
/ git Public
forked from git/git

Commit

Permalink
merge: --log appends shortlog to message if specified
Browse files Browse the repository at this point in the history
When the user specifies a message, use fmt_merge_msg_shortlog() to
append the shortlog.

Previously, when a message was specified, we ignored the merge title
("Merge <foo> into <bar>") and shortlog from fmt_merge_msg().

Update the documentation for -m to reflect this too.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
rctay authored and gitster committed May 10, 2010
1 parent 8c6bdfd commit f0ecac2
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 9 deletions.
7 changes: 6 additions & 1 deletion Documentation/git-merge.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,12 @@ include::merge-options.txt[]

-m <msg>::
Set the commit message to be used for the merge commit (in
case one is created). The 'git fmt-merge-msg' command can be
case one is created).

If `--log` is specified, a shortlog of the commits being merged
will be appended to the specified message.

The 'git fmt-merge-msg' command can be
used to give a good default for automated 'git merge'
invocations.

Expand Down
3 changes: 3 additions & 0 deletions builtin/fmt-merge-msg.c
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,9 @@ static int do_fmt_merge_msg(int merge_title, int merge_summary,
rev.ignore_merges = 1;
rev.limited = 1;

if (suffixcmp(out->buf, "\n"))
strbuf_addch(out, '\n');

for (i = 0; i < origins.nr; i++)
shortlog(origins.items[i].string, origins.items[i].util,
head, &rev, limit, out);
Expand Down
18 changes: 11 additions & 7 deletions builtin/merge.c
Original file line number Diff line number Diff line change
Expand Up @@ -981,18 +981,22 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
/*
* All the rest are the commits being merged;
* prepare the standard merge summary message to
* used as the merge message. If remote
* be appended to the given message. If remote
* is invalid we will die later in the common
* codepath so we discard the error in this
* loop.
*/
if (!have_message) {
for (i = 0; i < argc; i++)
merge_name(argv[i], &merge_names);
for (i = 0; i < argc; i++)
merge_name(argv[i], &merge_names);

if (have_message && option_log)
fmt_merge_msg_shortlog(&merge_names, &merge_msg);
else if (!have_message)
fmt_merge_msg(option_log, &merge_names, &merge_msg);
if (merge_msg.len)
strbuf_setlen(&merge_msg, merge_msg.len-1);
}


if (!(have_message && !option_log) && merge_msg.len)
strbuf_setlen(&merge_msg, merge_msg.len-1);
}

if (head_invalid || !argc)
Expand Down
2 changes: 1 addition & 1 deletion t/t7604-merge-custom-message.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ test_expect_success 'merge c2 with a custom message' '
test_cmp exp.subject actual
'

test_expect_failure 'merge --log appends to custom message' '
test_expect_success 'merge --log appends to custom message' '
git reset --hard c1 &&
git merge --log -m "$(cat exp.subject)" c2 &&
git cat-file commit HEAD | sed -e "1,/^$/d" >actual &&
Expand Down

0 comments on commit f0ecac2

Please sign in to comment.