# # # patch "ChangeLog" # from [87c45f5e99dd50bd0ccade6313ae6ec5119a680b] # to [6aaff09e173bf4c9a213703d1c69e14611412665] # # patch "cmd.hh" # from [7142b69f986d070ea15a283a19fa16e4fb9edd59] # to [e8800e57a6acc6a03997170266781e97d9a19304] # # patch "cmd_ws_commit.cc" # from [016445f1951330fa7c359da43a467636de5a1529] # to [d91beffea3f99a325b152c0a7160ba966f1592f9] # # patch "commands.cc" # from [c9e6fdb67f72a37dc491317be70923b5c701748a] # to [476c551a6311ecb8c6cf4d69665a63a258ad8eb3] # ============================================================ --- ChangeLog 87c45f5e99dd50bd0ccade6313ae6ec5119a680b +++ ChangeLog 6aaff09e173bf4c9a213703d1c69e14611412665 @@ -1,3 +1,13 @@ +2006-10-26 Richard Levitte + + * cmd_ws_commit.cc (CMD(disapprove)): Make it possible to specify + extra message lines to be added after the standard "disapprove" + line, as well as author and date. Makes use of the following + change: + * commands.cc,cmd.hh (process_commit_message_args): Add an extra + parameter to have as a prefix of the user message. If the prefix + exists, there will always be a message containing it. + 2006-10-24 Timothy Brownawell Fix an epoch refinement bug. If we already have an epoch for a branch ============================================================ --- cmd.hh 7142b69f986d070ea15a283a19fa16e4fb9edd59 +++ cmd.hh e8800e57a6acc6a03997170266781e97d9a19304 @@ -136,7 +136,8 @@ process_commit_message_args(bool & given void process_commit_message_args(bool & given, utf8 & log_message, - app_state & app); + app_state & app, + utf8 message_prefix = utf8("")); #define CMD(C, group, params, desc, opts) \ namespace commands { \ ============================================================ --- cmd_ws_commit.cc 016445f1951330fa7c359da43a467636de5a1529 +++ cmd_ws_commit.cc d91beffea3f99a325b152c0a7160ba966f1592f9 @@ -188,11 +188,14 @@ CMD(disapprove, N_("review"), N_("REVISI CMD(disapprove, N_("review"), N_("REVISION"), N_("disapprove of a particular revision"), - option::branch_name) + option::branch_name % option::message % option::msgfile % option::date % + option::author) { if (args.size() != 1) throw usage(name); + utf8 log_message(""); + bool log_message_given; revision_id r; revision_t rev, rev_inverse; shared_ptr cs_inverse(new cset()); @@ -206,6 +209,9 @@ CMD(disapprove, N_("review"), N_("REVISI guess_branch(r, app, branchname); N(app.branch_name() != "", F("need --branch argument for disapproval")); + process_commit_message_args(log_message_given, log_message, app, + (FL("disapproval of revision '%s'") % r).str()); + edge_entry const & old_edge (*rev.edges.begin()); app.db.get_revision_manifest(edge_old_revision(old_edge), rev_inverse.new_manifest); @@ -229,11 +235,15 @@ CMD(disapprove, N_("review"), N_("REVISI dbw.consume_revision_data(inv_id, rdat); cert_revision_in_branch(inv_id, branchname, app, dbw); - cert_revision_date_now(inv_id, app, dbw); - cert_revision_author_default(inv_id, app, dbw); - cert_revision_changelog(inv_id, - (FL("disapproval of revision '%s'") - % r).str(), app, dbw); + if (app.date_set) + cert_revision_date_time(inv_id, app.date, app, dbw); + else + cert_revision_date_now(inv_id, app, dbw); + if (app.author().length() > 0) + cert_revision_author(inv_id, app.author(), app, dbw); + else + cert_revision_author_default(inv_id, app, dbw); + cert_revision_changelog(inv_id, log_message, app, dbw); guard.commit(); } } ============================================================ --- commands.cc c9e6fdb67f72a37dc491317be70923b5c701748a +++ commands.cc 476c551a6311ecb8c6cf4d69665a63a258ad8eb3 @@ -451,7 +451,8 @@ process_commit_message_args(bool & given void process_commit_message_args(bool & given, utf8 & log_message, - app_state & app) + app_state & app, + utf8 message_prefix) { // can't have both a --message and a --message-file ... N(app.message().length() == 0 || app.message_file().length() == 0, @@ -459,7 +460,7 @@ process_commit_message_args(bool & given if (app.is_explicit_option(option::message())) { - log_message = app.message; + log_message = message_prefix() + "\n\n" + app.message(); given = true; } else if (app.is_explicit_option(option::msgfile())) @@ -468,8 +469,14 @@ process_commit_message_args(bool & given read_data_for_command_line(app.message_file(), dat); external dat2 = dat(); system_to_utf8(dat2, log_message); + log_message = message_prefix() + "\n\n" + log_message(); given = true; } + else if (message_prefix().length() != 0) + { + log_message = message_prefix; + given = true; + } else given = false; }