@@ -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)
@@ -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);
@@ -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;
};
@@ -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
)
'
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> --- 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(-)