#
#
# patch "ChangeLog"
# from [e49d9cea0ea66e2c20628a77999e4d622930ced5]
# to [baa49448050650d3748b546c9b5dc2199eca35fb]
#
# patch "cmd_merging.cc"
# from [3199f210b63b2f88248d416f45fad9cb7494229b]
# to [f6ac6ed245ff4603bcfc8d1197e1e7b57f0f8de8]
#
# patch "cmd_ws_commit.cc"
# from [90bed7e987225e0705db556a3c383bc459b4f440]
# to [bfe3d967696acea08b7b1ba51d42333f56636eaa]
#
# patch "tests/two_parent_workspace_commands_that_fail/__driver__.lua"
# from [4ac3985a30348b3d51c911af46749ba9e30ddca8]
# to [d48af1c64a6ef41df1c6ed6cd0e355ee675af624]
#
============================================================
--- ChangeLog e49d9cea0ea66e2c20628a77999e4d622930ced5
+++ ChangeLog baa49448050650d3748b546c9b5dc2199eca35fb
@@ -1,7 +1,9 @@ 2007-02-07 Zack Weinberg
* cmd_diff_log.cc (prepare_diff): Handle multi-parent workspaces
gracefully.
+ * cmd_merging.cc (update): Likewise.
+ * cmd_ws_commit.cc (revert): Likewise.
* tests/two_parent_workspace_commands_that_fail
* tests/two_parent_workspace_pluck: New tests (expected to fail).
============================================================
--- cmd_merging.cc 3199f210b63b2f88248d416f45fad9cb7494229b
+++ cmd_merging.cc f6ac6ed245ff4603bcfc8d1197e1e7b57f0f8de8
@@ -140,10 +140,13 @@ CMD(update, N_("workspace"), "",
app.require_workspace();
// Figure out where we are
+ parent_map parents;
+ app.work.get_parent_rosters(parents);
- revision_id old_rid;
- app.work.get_revision_id(old_rid);
+ N(parents.size() == 1,
+ F("this command can only be used in a single-parent workspace"));
+ revision_id old_rid = parents.begin()->first;
N(!null_id(old_rid),
F("this workspace is a new project; cannot update"));
@@ -223,10 +226,10 @@ CMD(update, N_("workspace"), "",
temp_node_id_source nis;
// Get the OLD and WORKING rosters
- shared_ptr old_roster = shared_ptr(new roster_t());
+ database::roster_t_cp old_roster = parents.begin()->second.first;
MM(*old_roster);
roster_t working_roster; MM(working_roster);
- app.work.get_base_and_current_roster_shape(*old_roster, working_roster, nis);
+ app.work.get_current_roster_shape(working_roster, nis);
app.work.update_current_roster_from_filesystem(working_roster);
// Get the CHOSEN roster
============================================================
--- cmd_ws_commit.cc 90bed7e987225e0705db556a3c383bc459b4f440
+++ cmd_ws_commit.cc bfe3d967696acea08b7b1ba51d42333f56636eaa
@@ -80,7 +80,6 @@ CMD(revert, N_("workspace"), N_("[PATH].
N_("revert file(s), dir(s) or entire workspace (\".\")"),
options::opts::depth | options::opts::exclude | options::opts::missing)
{
- temp_node_id_source nis;
roster_t old_roster, new_roster;
cset included, excluded;
@@ -89,9 +88,19 @@ CMD(revert, N_("workspace"), N_("[PATH].
app.require_workspace();
- app.work.get_base_and_current_roster_shape(old_roster, new_roster, nis);
+ {
+ parent_map parents;
+ app.work.get_parent_rosters(parents);
+ N(parents.size() == 1,
+ F("this command can only be used in a single-parent workspace"));
+ old_roster = *(parents.begin()->second.first);
- node_restriction mask(args_to_paths(args), args_to_paths(app.opts.exclude_patterns),
+ temp_node_id_source nis;
+ app.work.get_current_roster_shape(new_roster, nis);
+ }
+
+ node_restriction mask(args_to_paths(args),
+ args_to_paths(app.opts.exclude_patterns),
app.opts.depth,
old_roster, new_roster, app);
============================================================
--- tests/two_parent_workspace_commands_that_fail/__driver__.lua 4ac3985a30348b3d51c911af46749ba9e30ddca8
+++ tests/two_parent_workspace_commands_that_fail/__driver__.lua d48af1c64a6ef41df1c6ed6cd0e355ee675af624
@@ -37,8 +37,9 @@ check(mtn("automate", "content_diff", "-
check(mtn("diff", "-r", left), 0, false, nil)
check(mtn("automate", "content_diff", "-r", right), 0, false, nil)
-xfail(mtn("revert"), 1, nil, diag)
-xfail(mtn("update"), 1, nil, diag)
+-- revert and update: to where?
+check(mtn("revert", "."), 1, nil, diag)
+check(mtn("update"), 1, nil, diag)
xfail(mtn("automate", "get_base_revision_id"), 1, nil, diag)
xfail(mtn("automate", "inventory"), 1, nil, diag)