# # # patch "cmd_ws_commit.cc" # from [1627f47b908995680ca226cfeb94b0ca5a7e904e] # to [484d65233dbdbc8feec237c05108b8251e81ef7e] # # patch "rev_output.cc" # from [9919b72bc029e80d06c4b443a35236f8f1eb4f6a] # to [5b90e3cac54bb39eba9c5bba9cdc32490bb75c4e] # # patch "tests/_--author,_--date/__driver__.lua" # from [32996584305ed55d69e88dd14f0570e6da40b827] # to [39f17d4b68507906b2c98cefda79c2c0d9fc9ba3] # # patch "tests/changelog_editor/__driver__.lua" # from [b62305226b6f71d30943691986ba4a2e72bab153] # to [e8991b59f2ef5c4e8d4d513eb7beee923c1969ef] # # patch "tests/changelog_editor/changelog.lua" # from [b6eb964c1ffd38244100bbdea4177123d794b4ee] # to [39c618036605cd443ed0d0855b74cc323d409e9b] # # patch "tests/git_export/__driver__.lua" # from [ca3862a9039ee4e3f52329a6d0cfad08c347cc33] # to [d7ba0d936847de3d24d493df4167d687b3f63618] # # patch "tests/importing_cvs_metadata/expected_log_output" # from [c91d730a5ffc142eff7bfa1d41a066e487fbfab3] # to [abb52e3f4b0704dd65268bbab4737a9ae552480f] # # patch "tests/merge_into_workspace/expected-log" # from [12af94f6f47e0db5c13c179228c6d164db1074e7] # to [423e88b22f687ec14c2692dccea7539ea29fec8b] # # patch "tests/merge_into_workspace/expected-log-left" # from [acf670e2a70b6e61221f7bda66ff08518902786f] # to [c6ae73aeaecf79338e85684130e961bcd8660b16] # ============================================================ --- cmd_ws_commit.cc 1627f47b908995680ca226cfeb94b0ca5a7e904e +++ cmd_ws_commit.cc 484d65233dbdbc8feec237c05108b8251e81ef7e @@ -133,17 +133,18 @@ get_log_message_interactively(lua_hooks string const & date_fmt, utf8 & log_message) { utf8 instructions( - _("Ensure the values for Author, Date and Branch are correct, then enter\n" - "a description of this change following the ChangeLog line. Any other\n" - "modifications to the lines below or to the summary of changes will\n" - "cause the commit to fail.\n")); + _("Enter a description of this change following the ChangeLog line.\n" + "The values of Author, Date and Branch may be modified as required.\n" + "Any other modifications will will cause the commit to fail.\n")); + utf8 cancel(_("*** REMOVE THIS LINE TO CANCEL THE COMMIT ***\n")); + utf8 changelog; work.read_user_log(changelog); - // ensure the changelog message ends with a newline. an empty changelog is - // replaced with a single newline so that the ChangeLog: cert line is - // produced by revision_header and there is somewhere to enter a message + // ensure the changelog message is non-empty so that the ChangeLog: cert + // line is produced by revision_header and there is somewhere to enter a + // message string text = changelog(); @@ -159,7 +160,7 @@ get_log_message_interactively(lua_hooks revision_header(rid, rev, author, date, branch, changelog, date_fmt, header); revision_summary(rev, summary); - utf8 full_message(instructions() + header() + summary(), origin::internal); + utf8 full_message(instructions() + cancel() + header() + summary(), origin::internal); external input_message; external output_message; @@ -178,22 +179,24 @@ get_log_message_interactively(lua_hooks // Check the message carefully to make sure the user didn't edit somewhere // outside of the author, date, branch or changelog values. The section - // between the "ChangeLog: " line from the header and the "Changes against - // parent ..." line from the summary is where they should be adding + // between the "ChangeLog: " line from the header and the first + // "ChangeSet: " line from the summary is where they should be adding // lines. Ideally, there is a blank line following "ChangeLog:" // (preceeding the changelog message) and another blank line preceeding - // "Changes against parent ..." (following the changelog message) but both - // of these are optional. + // "ChangeSet: " (following the changelog message) but both of these are + // optional. E(message.read(instructions()), origin::user, - F("Modifications outside of Author, Date, Branch or ChangeLog.\n" - "Commit failed (instructions not found).")); + F("Commit failed. Instructions not found.")); - utf8 const AUTHOR(_("Author: ")); - utf8 const DATE(_("Date: ")); - utf8 const BRANCH(_("Branch: ")); - utf8 const CHANGELOG(_("ChangeLog: ")); + E(message.read(cancel()), origin::user, + F("Commit cancelled.")); + utf8 const AUTHOR(trim_right(_("Author: ")).c_str()); + utf8 const DATE(trim_right(_("Date: ")).c_str()); + utf8 const BRANCH(trim_right(_("Branch: ")).c_str()); + utf8 const CHANGELOG(trim_right(_("ChangeLog: ")).c_str()); + // ---------------------------------------------------------------------- // Revision: // Parent: @@ -205,32 +208,27 @@ get_log_message_interactively(lua_hooks string prefix = header().substr(0, pos); E(message.read(prefix), origin::user, - F("Modifications outside of Author, Date, Branch or ChangeLog.\n" - "Commit failed (Revision or Parent header not found).")); + F("Commit failed. Revision/Parent header not found.")); // Author: E(message.read(AUTHOR()), origin::user, - F("Modifications outside of Author, Date, Branch or ChangeLog.\n" - "Commit failed (Author header not found).")); + F("Commit failed. Author header not found.")); author = message.readline(); E(!author.empty(), origin::user, - F("Modifications outside of Author, Date, Branch or ChangeLog.\n" - "Commit failed (Author header empty).")); + F("Commit failed. Author value empty.")); // Date: E(message.read(DATE()), origin::user, - F("Modifications outside of Author, Date, Branch or ChangeLog.\n" - "Commit failed (Date header not found).")); + F("Commit failed. Date header not found.")); string d = message.readline(); E(!d.empty(), origin::user, - F("Modifications outside of Author, Date, Branch or ChangeLog.\n" - "Commit failed (Date header empty).")); + F("Commit failed. Date value empty.")); if (date_fmt.empty()) date = date_t(d); @@ -240,34 +238,33 @@ get_log_message_interactively(lua_hooks // Branch: E(message.read(BRANCH()), origin::user, - F("Modifications outside of Author, Date, Branch or ChangeLog.\n" - "Commit failed (Branch header not found).")); + F("Commit failed. Branch header not found.")); string b = message.readline(); E(!b.empty(), origin::user, - F("Modifications outside of Author, Date, Branch or ChangeLog.\n" - "Commit failed (Branch header empty).")); + F("Commit failed. Branch value empty.")); branch = branch_name(b, origin::user); + string blank = message.readline(); + E(blank == "", origin::user, + F("Commit failed. Blank line before ChangeLog header not found.")); + // ChangeLog: E(message.read(CHANGELOG()), origin::user, - F("Modifications outside of Author, Date, Branch or ChangeLog.\n" - "Commit failed (ChangeLog header not found).")); + F("Commit failed. ChangeLog header not found.")); // remove the summary before extracting the changelog content if (!summary().empty()) { E(message.contains(summary()), origin::user, - F("Modifications outside of Author, Date, Branch or ChangeLog.\n" - "Commit failed (change summary not found).")); + F("Commit failed. ChangeSet summary not found.")); E(message.remove(summary()), origin::user, - F("Modifications outside of Author, Date, Branch or ChangeLog.\n" - "Commit failed (text following summary).")); + F("Commit failed. Text following ChangeSet summary.")); } string content = trim(message.content()) + '\n'; @@ -788,18 +785,6 @@ CMD(status, "status", "", CMD_REF(inform utf8 changelog; work.read_user_log(changelog); - // ensure the changelog message ends with a newline. an empty changelog is - // replaced with a single newline so that the ChangeLog: cert line is - // produced by revision_header for consistency with commit. - - string text = changelog(); - - if (text.empty() || text[text.length()-1] != '\n') - { - text += '\n'; - changelog = utf8(text, origin::user); - } - utf8 header; utf8 summary; ============================================================ --- rev_output.cc 9919b72bc029e80d06c4b443a35236f8f1eb4f6a +++ rev_output.cc 5b90e3cac54bb39eba9c5bba9cdc32490bb75c4e @@ -42,9 +42,11 @@ revision_header(revision_id const rid, r empty_key)); certs.push_back(cert(rid, branch_cert_name, cert_value(branch(), origin::user), empty_key)); - certs.push_back(cert(rid, changelog_cert_name, - cert_value(changelog(), origin::user), empty_key)); + if (!changelog().empty()) + certs.push_back(cert(rid, changelog_cert_name, + cert_value(changelog(), origin::user), empty_key)); + revision_header(rid, rev, certs, date_fmt, header); } @@ -62,7 +64,7 @@ revision_header(revision_id const rid, r { revision_id parent = edge_old_revision(*i); if (!null_id(parent)) - out << _("Parent: ") << parent << '\n'; + out << _("Parent: ") << parent << '\n'; } cert_name const author(author_cert_name); @@ -74,28 +76,30 @@ revision_header(revision_id const rid, r for (vector::const_iterator i = certs.begin(); i != certs.end(); ++i) if (i->name == author) - out << _("Author: ") << i->value << '\n'; + out << _("Author: ") << i->value << '\n'; for (vector::const_iterator i = certs.begin(); i != certs.end(); ++i) if (i->name == date) { if (date_fmt.empty()) - out << _("Date: ") << i->value << '\n'; + out << _("Date: ") << i->value << '\n'; else { date_t date(i->value()); - out << _("Date: ") << date.as_formatted_localtime(date_fmt) << '\n'; + out << _("Date: ") << date.as_formatted_localtime(date_fmt) << '\n'; } } for (vector::const_iterator i = certs.begin(); i != certs.end(); ++i) if (i->name == branch) - out << _("Branch: ") << i->value << '\n'; + out << _("Branch: ") << i->value << '\n'; for (vector::const_iterator i = certs.begin(); i != certs.end(); ++i) if (i->name == tag) - out << _("Tag: ") << i->value << '\n'; + out << _("Tag: ") << i->value << '\n'; + out << "\n"; + for (vector::const_iterator i = certs.begin(); i != certs.end(); ++i) if (i->name == changelog) { @@ -134,9 +138,9 @@ revision_summary(revision_t const & rev, // A colon at the end of this string looked nicer, but it made // double-click copying from terminals annoying. if (null_id(parent)) - out << _("Changes") << "\n\n"; + out << _("ChangeSet: ") << "\n\n"; else - out << _("Changes against parent ") << parent << "\n\n"; + out << _("ChangeSet: ") << parent << "\n\n"; // presumably a merge rev could have an empty edge if one side won if (cs.empty()) ============================================================ --- tests/_--author,_--date/__driver__.lua 32996584305ed55d69e88dd14f0570e6da40b827 +++ tests/_--author,_--date/__driver__.lua 39f17d4b68507906b2c98cefda79c2c0d9fc9ba3 @@ -6,8 +6,8 @@ check(mtn("log", "--from", rev), 0, true rev = base_revision() check(mtn("log", "--from", rev), 0, true, false) -check(qgrep('^[\\| ]+Author: the_author', "stdout")) -check(qgrep('^[\\| ]+Date: 1999-12-31T12:00:00', "stdout")) +check(qgrep('^[\\| ]+Author: the_author', "stdout")) +check(qgrep('^[\\| ]+Date: 1999-12-31T12:00:00', "stdout")) writefile("testfile", "oovel") check(mtn("commit", "--date=1999-12-31T12:00foo", "--branch=foo", "--message=foo"), 1, false, false) ============================================================ --- tests/changelog_editor/__driver__.lua b62305226b6f71d30943691986ba4a2e72bab153 +++ tests/changelog_editor/__driver__.lua e8991b59f2ef5c4e8d4d513eb7beee923c1969ef @@ -30,21 +30,27 @@ check(mtn("commit", "--rcfile=changelog. writefile("_MTN/log", "missing instructions") check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) -check(qgrep("instructions not found", "stderr")) +check(qgrep("Instructions not found", "stderr")) +-- commit can be cancelled + +writefile("_MTN/log", "cancel") +check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) +check(qgrep("Commit cancelled.", "stderr")) + -- commit fails with modified/missing separator, Revision: or Parent: lines writefile("_MTN/log", "missing separator") check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) -check(qgrep("Revision or Parent header not found", "stderr")) +check(qgrep("Revision/Parent header not found", "stderr")) writefile("_MTN/log", "missing revision") check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) -check(qgrep("Revision or Parent header not found", "stderr")) +check(qgrep("Revision/Parent header not found", "stderr")) writefile("_MTN/log", "missing parent") check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) -check(qgrep("Revision or Parent header not found", "stderr")) +check(qgrep("Revision/Parent header not found", "stderr")) -- commit fails with modified/missing Author: line @@ -56,7 +62,7 @@ check(mtn("commit", "--rcfile=changelog. writefile("_MTN/log", "empty author") check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) -check(qgrep("Author header empty", "stderr")) +check(qgrep("Author value empty", "stderr")) -- commit fails with modified/missing Date: line @@ -68,7 +74,7 @@ check(mtn("commit", "--rcfile=changelog. writefile("_MTN/log", "empty date") check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) -check(qgrep("Date header empty", "stderr")) +check(qgrep("Date value empty", "stderr")) -- commit fails with modified/missing Branch: line @@ -80,31 +86,37 @@ check(mtn("commit", "--rcfile=changelog. writefile("_MTN/log", "empty branch") check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) -check(qgrep("Branch header empty", "stderr")) +check(qgrep("Branch value empty", "stderr")) +-- commit fails with modified/missing blank line before ChangeLog section + +writefile("_MTN/log", "missing blank line") +check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) +check(qgrep("ChangeLog header not found", "stderr")) + -- commit fails with modified/missing ChangeLog section writefile("_MTN/log", "missing changelog") check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) check(qgrep("ChangeLog header not found", "stderr")) --- commit fails with missing Change summary section +-- commit fails with missing ChangeSet summary section writefile("_MTN/log", "missing summary") check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) -check(qgrep("change summary not found", "stderr")) +check(qgrep("ChangeSet summary not found", "stderr")) --- commit fails with duplicated Changes: section +-- commit fails with duplicated ChangeSet: section writefile("_MTN/log", "duplicated summary") check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) -check(qgrep("text following summary", "stderr")) +check(qgrep("Text following ChangeSet summary", "stderr")) -- commit fails with new text after Changes: section writefile("_MTN/log", "trailing text") check(mtn("commit", "--rcfile=changelog.lua"), 1, false, true) -check(qgrep("text following summary", "stderr")) +check(qgrep("Text following ChangeSet summary", "stderr")) -- commits that succeed @@ -116,9 +128,9 @@ check(mtn("log", "--last", "1", "--no-gr writefile("_MTN/log", "fine") check(mtn("commit", "--rcfile=changelog.lua", "--date", "2010-01-01T01:01:01", "--author", "bobo", "--branch", "left"), 0, false, false) check(mtn("log", "--last", "1", "--no-graph"), 0, true, false) -check(qgrep("Date: 2010-01-01T01:01:01", "stdout")) -check(qgrep("Author: bobo", "stdout")) -check(qgrep("Branch: left", "stdout")) +check(qgrep("Date: 2010-01-01T01:01:01", "stdout")) +check(qgrep("Author: bobo", "stdout")) +check(qgrep("Branch: left", "stdout")) -- test changed --date, --author and --branch options @@ -126,9 +138,9 @@ check(mtn("log", "--last", "1", "--no-gr writefile("_MTN/log", "change author/date/branch") check(mtn("commit", "--rcfile=changelog.lua", "--date", "2010-01-01T01:01:01", "--author", "bobo", "--branch", "left"), 0, false, false) check(mtn("log", "--last", "1", "--no-graph"), 0, true, false) -check(not qgrep("Date: 2010-01-01T01:01:01", "stdout")) -check(not qgrep("Author: bobo", "stdout")) -check(not qgrep("Branch: left", "stdout")) +check(not qgrep("Date: 2010-01-01T01:01:01", "stdout")) +check(not qgrep("Author: bobo", "stdout")) +check(not qgrep("Branch: left", "stdout")) -- test unchanged date gets updated to reflect current time @@ -147,7 +159,7 @@ check(mtn("log", "--last", "1", "--no-gr writefile("_MTN/log", "change date") check(mtn("commit", "--rcfile=changelog.lua"), 0, false, false) check(mtn("log", "--last", "1", "--no-graph"), 0, true, false) -check(qgrep("Date: 2010-01-01T01:01:01", "stdout")) +check(qgrep("Date: 2010-01-01T01:01:01", "stdout")) -- message on same line as ChangeLog: header ============================================================ --- tests/changelog_editor/changelog.lua b6eb964c1ffd38244100bbdea4177123d794b4ee +++ tests/changelog_editor/changelog.lua 39c618036605cd443ed0d0855b74cc323d409e9b @@ -6,6 +6,8 @@ function edit_comment(user_log_file) return string.gsub(user_log_file, "\nempty message\n", "") elseif (string.find(user_log_file, "\nmissing instructions\n")) then return "foobar" .. user_log_file + elseif (string.find(user_log_file, "\ncancel\n")) then + return string.gsub(user_log_file, "... REMOVE THIS LINE TO CANCEL THE COMMIT ...\n", "") elseif (string.find(user_log_file, "\nmissing separator\n")) then return string.gsub(user_log_file, "---------------\n", "\n") elseif (string.find(user_log_file, "\nmissing revision\n")) then @@ -24,12 +26,14 @@ function edit_comment(user_log_file) return string.gsub(user_log_file, "\nBranch:", "\nranch:") elseif (string.find(user_log_file, "\nempty branch\n")) then return string.gsub(user_log_file, "\nBranch: [^\n]*\n", "\nBranch: \n") + elseif (string.find(user_log_file, "\nmissing blank line\n")) then + return string.gsub(user_log_file, "\n\nChangeLog:", "\nChangeLog:") elseif (string.find(user_log_file, "\nmissing changelog\n")) then return string.gsub(user_log_file, "\nChangeLog:", "\n") elseif (string.find(user_log_file, "\nmissing summary\n")) then - return string.gsub(user_log_file, "\nChanges against parent", "\nChanges against foobar") + return string.gsub(user_log_file, "\nChangeSet: ", "\nChange foobar") elseif (string.find(user_log_file, "\nduplicated summary\n")) then - return string.gsub(user_log_file, "(Changes against parent.*)", "%1%1") + return string.gsub(user_log_file, "(ChangeSet: .*)", "%1%1") elseif (string.find(user_log_file, "\ntrailing text\n")) then return user_log_file .. "foobar" end @@ -38,20 +42,20 @@ function edit_comment(user_log_file) if (string.find(user_log_file, "\nchange author/date/branch\n")) then result = user_log_file - result = string.gsub(result, "\nDate: [^\n]*\n", "\nDate: 2010-02-02T02:02:02\n") - result = string.gsub(result, "\nAuthor: bobo\n", "\nAuthor: baba\n") - result = string.gsub(result, "\nBranch: left\n", "\nBranch: right\n") + result = string.gsub(result, "\nDate: [^\n]*\n", "\nDate: 2010-02-02T02:02:02\n") + result = string.gsub(result, "\nAuthor: bobo\n", "\nAuthor: baba\n") + result = string.gsub(result, "\nBranch: left\n", "\nBranch: right\n") return result elseif (string.find(user_log_file, "\nsleep\n")) then - date = string.match(user_log_file, "\nDate: ([^\n]*)") + date = string.match(user_log_file, "\nDate: ([^\n]*)") sleep(2) return string.gsub(user_log_file, "\nChangeLog: \n\nsleep", "\nChangeLog: \n\nOld: " .. date) elseif (string.find(user_log_file, "\nchange date\n")) then - return string.gsub(user_log_file, "\nDate: [^\n]*\n", "\nDate: 2010-01-01T01:01:01\n") + return string.gsub(user_log_file, "\nDate: [^\n]*\n", "\nDate: 2010-01-01T01:01:01\n") elseif (string.find(user_log_file, "\nchangelog line\n")) then - return string.gsub(user_log_file, "\nChangeLog: \n\nchangelog line", "\nChangeLog: message on changelog line") + return string.gsub(user_log_file, "\nChangeLog: \n\nchangelog line", "\nChangeLog:message on changelog line") elseif (string.find(user_log_file, "\nfull changelog\n")) then - return string.gsub(user_log_file, "\nChangeLog: .*\nChanges against parent", "\nChangeLog: no\nspace\naround\nthis\nchangelog\nChanges against parent") + return string.gsub(user_log_file, "\nChangeLog: .*\nChangeSet:", "\nChangeLog:no\nspace\naround\nthis\nchangelog\nChangeSet:") end return user_log_file ============================================================ --- tests/git_export/__driver__.lua ca3862a9039ee4e3f52329a6d0cfad08c347cc33 +++ tests/git_export/__driver__.lua d7ba0d936847de3d24d493df4167d687b3f63618 @@ -79,7 +79,7 @@ check(indir("mtn.dir", mtn("log")), 0, t -- log both repos and check the author mapping check(indir("mtn.dir", mtn("log")), 0, true, false) -check(qgrep("Author: address@hidden", "stdout")) +check(qgrep("Author: address@hidden", "stdout")) check(indir("git.dir", {"git", "log", "--summary", "--pretty=raw"}), 0, true, false) check(qgrep("author other ", "stdout")) check(qgrep("committer other ", "stdout")) ============================================================ --- tests/importing_cvs_metadata/expected_log_output c91d730a5ffc142eff7bfa1d41a066e487fbfab3 +++ tests/importing_cvs_metadata/expected_log_output abb52e3f4b0704dd65268bbab4737a9ae552480f @@ -1,13 +1,14 @@ Revision: f31b5f6dfeddd51ebf19cd44c4176c ---------------------------------------------------------------------- Revision: f31b5f6dfeddd51ebf19cd44c4176c68bff51709 -Author: luigi -Date: 2009-09-11T16:37:48 -Branch: testbranch +Author: luigi +Date: 2009-09-11T16:37:48 +Branch: testbranch + ChangeLog: test -Changes +ChangeSet: added added test.txt ============================================================ --- tests/merge_into_workspace/expected-log 12af94f6f47e0db5c13c179228c6d164db1074e7 +++ tests/merge_into_workspace/expected-log 423e88b22f687ec14c2692dccea7539ea29fec8b @@ -1,41 +1,44 @@ Revision: 04093de26437e634d2b43f1722e22f ---------------------------------------------------------------------- Revision: 04093de26437e634d2b43f1722e22fcc6b3804c3 -Parent: 87c726bb950efb3d809662b86700a8566346970d -Author: address@hidden -Date: 2007-02-28T02:09:14 -Branch: testbranch +Parent: 87c726bb950efb3d809662b86700a8566346970d +Author: address@hidden +Date: 2007-02-28T02:09:14 +Branch: testbranch + ChangeLog: blah-blah -Changes against parent 87c726bb950efb3d809662b86700a8566346970d +ChangeSet: 87c726bb950efb3d809662b86700a8566346970d patched testfile ---------------------------------------------------------------------- Revision: 21320a960288df775cd62b01f1b40e981f4ecd65 -Parent: 87c726bb950efb3d809662b86700a8566346970d -Author: address@hidden -Date: 2007-02-28T02:09:13 -Branch: testbranch +Parent: 87c726bb950efb3d809662b86700a8566346970d +Author: address@hidden +Date: 2007-02-28T02:09:13 +Branch: testbranch + ChangeLog: blah-blah -Changes against parent 87c726bb950efb3d809662b86700a8566346970d +ChangeSet: 87c726bb950efb3d809662b86700a8566346970d patched testfile ---------------------------------------------------------------------- Revision: 87c726bb950efb3d809662b86700a8566346970d -Author: address@hidden -Date: 2007-02-28T02:09:12 -Branch: testbranch +Author: address@hidden +Date: 2007-02-28T02:09:12 +Branch: testbranch + ChangeLog: blah-blah -Changes +ChangeSet: added added otherfile ============================================================ --- tests/merge_into_workspace/expected-log-left acf670e2a70b6e61221f7bda66ff08518902786f +++ tests/merge_into_workspace/expected-log-left c6ae73aeaecf79338e85684130e961bcd8660b16 @@ -1,27 +1,29 @@ Revision: 21320a960288df775cd62b01f1b40e ---------------------------------------------------------------------- Revision: 21320a960288df775cd62b01f1b40e981f4ecd65 -Parent: 87c726bb950efb3d809662b86700a8566346970d -Author: address@hidden -Date: 2007-02-28T02:11:20 -Branch: testbranch +Parent: 87c726bb950efb3d809662b86700a8566346970d +Author: address@hidden +Date: 2007-02-28T02:11:20 +Branch: testbranch + ChangeLog: blah-blah -Changes against parent 87c726bb950efb3d809662b86700a8566346970d +ChangeSet: 87c726bb950efb3d809662b86700a8566346970d patched testfile ---------------------------------------------------------------------- Revision: 87c726bb950efb3d809662b86700a8566346970d -Author: address@hidden -Date: 2007-02-28T02:11:19 -Branch: testbranch +Author: address@hidden +Date: 2007-02-28T02:11:19 +Branch: testbranch + ChangeLog: blah-blah -Changes +ChangeSet: added added otherfile