# # # patch "cmd_merging.cc" # from [5dabc088cccbe6078efdd4abb65847fdb6871bf3] # to [d750147546d2fdd56e181c69281892c9569a845e] # # patch "tests/resolve_conflicts_duplicate_name/__driver__.lua" # from [895b0ad5b991fe29dac9dd64a849d2be7a2535b6] # to [195a80d22799634a6d5016e12af19c216d66b4ff] # # patch "tests/resolve_conflicts_propagate/__driver__.lua" # from [9e81d38b28dd374e664fb360501d60f93eb0f5d3] # to [1033fef4df9f5fc271562bab64d0096aa8e578aa] # ============================================================ --- cmd_merging.cc 5dabc088cccbe6078efdd4abb65847fdb6871bf3 +++ cmd_merging.cc d750147546d2fdd56e181c69281892c9569a845e @@ -330,6 +330,8 @@ merge_two(options & opts, lua_hooks & lu using std::max; ostringstream log; + utf8 log_message(""); + bool log_message_given; size_t fieldwidth = max(caller.size() + strlen(" of '"), strlen("and '")); if (branch != opts.branchname) @@ -342,6 +344,8 @@ merge_two(options & opts, lua_hooks & lu if (branch != opts.branchname) log << setw(fieldwidth) << "to branch '" << branch << "'\n"; + process_commit_message_args(opts, log_message_given, log_message, utf8(log.str())); + // Now it's time for the real work. if (automate) { @@ -357,8 +361,7 @@ merge_two(options & opts, lua_hooks & lu transaction_guard guard(project.db); interactive_merge_and_store(lua, project.db, opts, left, right, merged); - project.put_standard_certs_from_options(opts, lua, keys, merged, branch, - utf8(log.str())); + project.put_standard_certs_from_options(opts, lua, keys, merged, branch, log_message); guard.commit(); if (automate) @@ -427,7 +430,7 @@ CMD(merge, "merge", "", CMD_REF(tree), " N_("Merges unmerged heads of a branch"), "", options::opts::branch | options::opts::date | options::opts::author | - options::opts::resolve_conflicts_opts) + options::opts::messages | options::opts::resolve_conflicts_opts) { database db(app); key_store keys(app); @@ -503,7 +506,7 @@ CMD(propagate, "propagate", "", CMD_REF( N_("Merges from one branch to another asymmetrically"), "", options::opts::date | options::opts::author | options::opts::message | options::opts::msgfile | - options::opts::resolve_conflicts_opts) + options::opts::messages | options::opts::resolve_conflicts_opts) { if (args.size() != 2) throw usage(execid); @@ -542,7 +545,7 @@ CMD(merge_into_dir, "merge_into_dir", "" N_("SOURCE-BRANCH DEST-BRANCH DIR"), N_("Merges one branch into a subdirectory in another branch"), "", - options::opts::date | options::opts::author | options::opts::message | options::opts::msgfile | + options::opts::date | options::opts::author | options::opts::messages | options::opts::resolve_conflicts_opts) { database db(app); @@ -666,15 +669,15 @@ CMD(merge_into_dir, "merge_into_dir", "" bool log_message_given; utf8 log_message; - process_commit_message_args(app.opts, log_message_given, log_message); - if (!log_message_given) - log_message = utf8((FL("propagate from branch '%s' (head %s)\n" + utf8 log_prefix = utf8((FL("propagate from branch '%s' (head %s)\n" " to branch '%s' (head %s)\n") % idx(args, 0) % *src_i % idx(args, 1) % *dst_i).str()); + process_commit_message_args(app.opts, log_message_given, log_message, log_prefix); + project.put_standard_certs_from_options(app.opts, app.lua, keys, merged, @@ -803,7 +806,7 @@ CMD(explicit_merge, "explicit_merge", "" N_("The results of the merge are placed on the branch specified by " "DEST-BRANCH."), options::opts::date | options::opts::author | - options::opts::resolve_conflicts_opts) + options::opts::messages | options::opts::resolve_conflicts_opts) { database db(app); key_store keys(app); ============================================================ --- tests/resolve_conflicts_duplicate_name/__driver__.lua 895b0ad5b991fe29dac9dd64a849d2be7a2535b6 +++ tests/resolve_conflicts_duplicate_name/__driver__.lua 195a80d22799634a6d5016e12af19c216d66b4ff @@ -76,14 +76,19 @@ check(samefilestd("conflicts-resolved", check(samefilestd("conflicts-resolved", "_MTN/conflicts")) -- This succeeds -check(mtn("merge", "--resolve-conflicts"), 0, nil, true) +logmsg = "rename thermostat, merge/drop checkout" +check(mtn("merge", "--resolve-conflicts", "--message", logmsg), 0, nil, true) canonicalize("stderr") check(samefilestd("merge-1", "stderr")) check(mtn("conflicts", "clean"), 0, nil, true) check(mtn("update"), 0, nil, false) +merged = base_revision() +check(mtn("automate", "certs", merged), 0, true, nil) +check(qgrep(logmsg, "stdout"), 0) + check("checkout.sh beth 2" == readfile("checkout.sh")) -- end of file ============================================================ --- tests/resolve_conflicts_propagate/__driver__.lua 9e81d38b28dd374e664fb360501d60f93eb0f5d3 +++ tests/resolve_conflicts_propagate/__driver__.lua 1033fef4df9f5fc271562bab64d0096aa8e578aa @@ -43,12 +43,18 @@ check(samefilestd("conflicts-resolved", check(samefilestd("conflicts-resolved", "_MTN/conflicts")) -check(mtn("propagate", "--resolve-conflicts", "abe_branch", "beth_branch"), 0, nil, true) +logmsg = "rename thermostat, drop/merge checkout" +check(mtn("propagate", "--resolve-conflicts", "abe_branch", "beth_branch", "--message", logmsg), 0, nil, true) canonicalize("stderr") check(samefilestd("propagate-1", "stderr")) +check(mtn("conflicts", "clean"), 0, nil, true) -check(mtn("conflicts", "clean"), 0, nil, true) +check(mtn("update"), 0, nil, false) +merged = base_revision() +check(mtn("automate", "certs", merged), 0, true, nil) +check(qgrep(logmsg, "stdout"), 0) + -- Propagate beth_branch to abe_branch revert_to(abe_1)