Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> --- builtin/merge.c | 1 + fmt-merge-msg.c | 21 +++++++++++++++++++-- fmt-merge-msg.h | 3 ++- t/t5563-update.sh | 10 +++++++++- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/builtin/merge.c b/builtin/merge.c index b9c6c43d8f..cb476958ad 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1136,6 +1136,7 @@ static void prepare_merge_message(struct strbuf *merge_names, struct strbuf *mer opts.add_title = !have_message; opts.shortlog_len = shortlog_len; opts.credit_people = (0 < option_edit); + opts.reverse_parents = reverse_parents; fmt_merge_msg(merge_names, merge_msg, &opts); if (merge_msg->len) diff --git a/fmt-merge-msg.c b/fmt-merge-msg.c index 0f66818e0f..1f840711cc 100644 --- a/fmt-merge-msg.c +++ b/fmt-merge-msg.c @@ -432,6 +432,19 @@ static int dest_suppressed(const char *dest_branch) return 0; } +static void fmt_update_msg_title(struct strbuf *out, const char *current_branch) +{ + struct src_data *src_data; + strbuf_addf(out, "Merge branch '%s'", current_branch); + src_data = srcs.items[0].util; + if (src_data->branch.nr) { + const char *branch_name = src_data->branch.items[0].string; + if (!dest_suppressed(branch_name)) + strbuf_addf(out, " into %s", branch_name); + } + strbuf_addch(out, '\n'); +} + static void fmt_merge_msg_title(struct strbuf *out, const char *current_branch) { @@ -665,8 +678,12 @@ int fmt_merge_msg(struct strbuf *in, struct strbuf *out, die("error in line %d: %.*s", i, len, p); } - if (opts->add_title && srcs.nr) - fmt_merge_msg_title(out, current_branch); + if (opts->add_title && srcs.nr) { + if (opts->reverse_parents) + fmt_update_msg_title(out, current_branch); + else + fmt_merge_msg_title(out, current_branch); + } if (origins.nr) fmt_merge_msg_sigs(out); diff --git a/fmt-merge-msg.h b/fmt-merge-msg.h index f2ab0e0085..fbdb1c905e 100644 --- a/fmt-merge-msg.h +++ b/fmt-merge-msg.h @@ -7,7 +7,8 @@ struct fmt_merge_msg_opts { unsigned add_title:1, - credit_people:1; + credit_people:1, + reverse_parents:1; int shortlog_len; }; diff --git a/t/t5563-update.sh b/t/t5563-update.sh index 72d6a357a1..aabbf5a965 100755 --- a/t/t5563-update.sh +++ b/t/t5563-update.sh @@ -7,6 +7,13 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh +check_msg () { + test "$2" != "master" && into=" into '$2'" + echo "Merge branch '$1'${into}" > expected + git log -1 --format=%s > actual && + test_cmp expected actual +} + test_expect_success 'setup' ' echo one > file && git add file && @@ -55,7 +62,8 @@ test_expect_success 'git update non-fast-forward with merge' ' git reset --hard master && git update --merge && test_cmp_rev @^2 master && - test_cmp_rev @^1 other + test_cmp_rev @^1 other && + check_msg test other ) ' -- 2.32.0.36.g70aac2b1aa