# # patch "commands.cc" # from [816e71e2f403fa13b05ce176b8a8bc0be6698fef] # to [fc7e035ae5a1ee56c84c1913b8d144f82d948060] # # patch "cset.cc" # from [a22992977fd4582ecec3f91196e2f846b60ccaa9] # to [81975d8737be5fb1c888e3a3fe3891c8831bb39e] # ======================================================================== --- commands.cc 816e71e2f403fa13b05ce176b8a8bc0be6698fef +++ commands.cc fc7e035ae5a1ee56c84c1913b8d144f82d948060 @@ -3096,32 +3096,19 @@ } CMD(explicit_merge, N_("tree"), - N_("LEFT-REVISION RIGHT-REVISION DEST-BRANCH\n" - "LEFT-REVISION RIGHT-REVISION COMMON-ANCESTOR DEST-BRANCH"), + N_("LEFT-REVISION RIGHT-REVISION DEST-BRANCH"), N_("merge two explicitly given revisions, placing result in given branch"), OPT_DATE % OPT_AUTHOR) { - revision_id left, right, ancestor; + revision_id left, right; string branch; - if (args.size() != 3 && args.size() != 4) + if (args.size() != 3) throw usage(name); complete(app, idx(args, 0)(), left); complete(app, idx(args, 1)(), right); - if (args.size() == 4) - { - complete(app, idx(args, 2)(), ancestor); - N(is_ancestor(ancestor, left, app), - F("%s is not an ancestor of %s") % ancestor % left); - N(is_ancestor(ancestor, right, app), - F("%s is not an ancestor of %s") % ancestor % right); - branch = idx(args, 3)(); - } - else - { - branch = idx(args, 2)(); - } + branch = idx(args, 2)(); N(!(left == right), F("%s and %s are the same revision, aborting") % left % right); @@ -3144,9 +3131,8 @@ string log = (boost::format("explicit_merge of '%s'\n" " and '%s'\n" - " using ancestor '%s'\n" " to branch '%s'\n") - % left % right % ancestor % branch).str(); + % left % right % branch).str(); cert_revision_changelog(merged, log, app, dbw); ======================================================================== --- cset.cc a22992977fd4582ecec3f91196e2f846b60ccaa9 +++ cset.cc 81975d8737be5fb1c888e3a3fe3891c8831bb39e @@ -440,6 +440,10 @@ // each cset thingie sets what it's supposed to // the topdown/bottomup stuff works // don't forget to check normalization of written form, either... + // no duplicate entries (as would be silently ignored, if we don't use + // safe_insert in the parser!) + // ordering + // whitespace normalization } static void