diff options
author | Tay Ray Chuan <rctay89@gmail.com> | 2010-05-11 01:17:52 +0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-05-10 12:02:20 -0700 |
commit | f0ecac2b70bf6b44b89dfa493abd2f544010b1eb (patch) | |
tree | 2fd6c98705ae583f32b25d9ee36567e5a2554b65 | |
parent | fmt-merge-msg: add function to append shortlog only (diff) | |
download | tgif-f0ecac2b70bf6b44b89dfa493abd2f544010b1eb.tar.xz |
merge: --log appends shortlog to message if specified
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>
-rw-r--r-- | Documentation/git-merge.txt | 7 | ||||
-rw-r--r-- | builtin/fmt-merge-msg.c | 3 | ||||
-rw-r--r-- | builtin/merge.c | 18 | ||||
-rwxr-xr-x | t/t7604-merge-custom-message.sh | 2 |
4 files changed, 21 insertions, 9 deletions
diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt index c2325ef90e..84043cc5b2 100644 --- a/Documentation/git-merge.txt +++ b/Documentation/git-merge.txt @@ -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. diff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c index 48548cf11b..44204257c7 100644 --- a/builtin/fmt-merge-msg.c +++ b/builtin/fmt-merge-msg.c @@ -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); diff --git a/builtin/merge.c b/builtin/merge.c index 0ae480987a..cae1cbee26 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -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) diff --git a/t/t7604-merge-custom-message.sh b/t/t7604-merge-custom-message.sh index af53df1c1b..9114785ef7 100755 --- a/t/t7604-merge-custom-message.sh +++ b/t/t7604-merge-custom-message.sh @@ -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 && |