# # # patch "automate.cc" # from [7c170bb85a285c11f30ada7f7f0523ae77b3a0ea] # to [780bd6bcbb19c32f3525342ba19b1e05b985dcea] # # patch "cmd_list.cc" # from [cfca33fa377f79f1d0ffdde1fc85fc082c2f8272] # to [6e2bbca774c1d1d19d2614f2b96a7d2756128e51] # # patch "cmd_merging.cc" # from [be7922b8b7fcfeda8e9ca10b19d428bc385bd1bc] # to [6ca1f623710821b7934884f3b4769a8eb7ca1f5a] # # patch "cmd_ws_commit.cc" # from [ca65ca47504d4fc3c0f8361b6fa53fe41078b3f2] # to [0223b8cbd1d1be675d2d30a123f9d020590a7586] # # patch "database.cc" # from [b80c102ba2c3ac8f7cca7298b132b02083bea9fc] # to [a48ab16e3543307cb298152deda35a8794ac91fe] # # patch "roster.cc" # from [3576d908a65b098b6dfcd7075a7fa5a66758bc01] # to [a507322a1ac625a6b55dbc02f6dc4157be899660] # # patch "roster.hh" # from [36f74b7c6e863434716bf7b8707be09b11364bef] # to [5064790916db5388ebe7f22944bc7aa4096bbef3] # # patch "work.cc" # from [eeeb7204b7d8cc209d13df715d4df8e8e3484214] # to [efa7e525bf25f88af7e5beb5364ab668d6838633] # ============================================================ --- automate.cc 7c170bb85a285c11f30ada7f7f0523ae77b3a0ea +++ automate.cc 780bd6bcbb19c32f3525342ba19b1e05b985dcea @@ -919,7 +919,7 @@ CMD_AUTOMATE(get_base_revision_id, "", app.require_workspace(); revision_id base; - appt.work.get_unique_base_rid(base); + app.work.get_unique_base_rid(base); output << base << '\n'; } ============================================================ --- cmd_list.cc cfca33fa377f79f1d0ffdde1fc85fc082c2f8272 +++ cmd_list.cc 6e2bbca774c1d1d19d2614f2b96a7d2756128e51 @@ -432,7 +432,10 @@ CMD(missing, "missing", "", CMD_REF(list { temp_node_id_source nis; roster_t current_roster_shape; - app.work.get_work_state_shape_only(current_roster_shape, nis); + { + parent_map parents; + app.work.get_work_state_shape_only(parents, current_roster_shape, nis); + } node_restriction mask(args_to_paths(args), args_to_paths(app.opts.exclude_patterns), app.opts.depth, ============================================================ --- cmd_merging.cc be7922b8b7fcfeda8e9ca10b19d428bc385bd1bc +++ cmd_merging.cc 6ca1f623710821b7934884f3b4769a8eb7ca1f5a @@ -144,6 +144,7 @@ update(app_state & app, commands::comman // Figure out where we are, and what we look like. parent_map parents; roster_t working_roster; MM(working_roster); + temp_node_id_source nis; app.work.get_work_state_shape_only(parents, working_roster, nis); N(parents.size() == 1, @@ -243,8 +244,6 @@ update(app_state & app, commands::comman // we apply the working to merged cset to the workspace // and write the cset from chosen to merged changeset in _MTN/work - temp_node_id_source nis; - // Get the OLD roster, and finish getting the WORKING roster roster_t_cp old_roster = parent_cached_roster(parents.begin()).first; ============================================================ --- cmd_ws_commit.cc ca65ca47504d4fc3c0f8361b6fa53fe41078b3f2 +++ cmd_ws_commit.cc 0223b8cbd1d1be675d2d30a123f9d020590a7586 @@ -598,17 +598,15 @@ CMD(checkout, "checkout", "co", CMD_REF( app.create_workspace(dir); L(FL("checking out revision %s to directory %s") % revid % dir); - cached_roster current_roster; - app.db.get_roster(revid, current_roster); - parent_map parents; - safe_insert(parents, std::make_pair(revid, current_roster)); - app.work.set_work_state_unchanged(parents, *current_roster.first); + app.work.set_work_state_unchanged(revid); { shared_ptr empty_roster = shared_ptr(new roster_t()); + cached_roster current_roster; + app.db.get_roster(revid, current_roster); cset checkout; - make_cset(*empty_roster, current_roster, checkout); + make_cset(*empty_roster, *current_roster.first, checkout); map paths; get_content_paths(*empty_roster, paths); ============================================================ --- database.cc b80c102ba2c3ac8f7cca7298b132b02083bea9fc +++ database.cc a48ab16e3543307cb298152deda35a8794ac91fe @@ -3267,7 +3267,7 @@ database::get_parent_map(revision_t cons } else { - db.get_roster(rid, cr); + get_roster(rid, cr); } safe_insert(parents, make_pair(rid, cr)); } ============================================================ --- roster.cc 3576d908a65b098b6dfcd7075a7fa5a66758bc01 +++ roster.cc a507322a1ac625a6b55dbc02f6dc4157be899660 @@ -1867,7 +1867,7 @@ namespace { make_roster_for_merge(revision_t const & rev, parent_map const & parents, revision_id const & new_rid, roster_t & new_roster, marking_map & new_markings, - node_id_source & nis) + database & db, node_id_source & nis) { edge_map::const_iterator i = rev.edges.begin(); revision_id const & left_rid = edge_old_revision(i); @@ -1918,7 +1918,7 @@ namespace { parent_map const & parents, revision_id const & new_rid, roster_t & new_roster, marking_map & new_markings, - database & db, node_id_source & nis) + node_id_source & nis) { revision_id const & parent_rid = edge_old_revision(rev.edges.begin()); cset const & parent_cs = edge_changes(rev.edges.begin()); @@ -1977,7 +1977,7 @@ make_roster_for_revision(revision_t cons make_roster_for_revision(revision_t const & rev, parent_map const & parents, revision_id const & new_rid, roster_t & new_roster, marking_map & new_markings, - node_id_source & nis) + database & db, node_id_source & nis) { MM(rev); MM(new_rid); @@ -1992,7 +1992,7 @@ make_roster_for_revision(revision_t cons new_rid, new_roster, new_markings, nis); else if (rev.edges.size() == 2) make_roster_for_merge(rev, parents, - new_rid, new_roster, new_markings, nis); + new_rid, new_roster, new_markings, db, nis); else I(false); @@ -2013,7 +2013,7 @@ make_roster_for_revision(revision_t cons app.db.get_parent_map(rev, parents); make_roster_for_revision(rev, parents, new_rid, new_roster, new_markings, - nis); + app.db, nis); } ============================================================ --- roster.hh 36f74b7c6e863434716bf7b8707be09b11364bef +++ roster.hh 5064790916db5388ebe7f22944bc7aa4096bbef3 @@ -479,7 +479,7 @@ make_roster_for_revision(revision_t cons revision_id const & rid, roster_t & result, marking_map & marking, - node_id_source & nis); + database & db, node_id_source & nis); void read_roster_and_marking(roster_data const & dat, ============================================================ --- work.cc eeeb7204b7d8cc209d13df715d4df8e8e3484214 +++ work.cc efa7e525bf25f88af7e5beb5364ab668d6838633 @@ -106,7 +106,7 @@ workspace::get_unique_base_rid(revision_ void workspace::get_unique_base_rid(revision_id & rid) { - revision_t & rev; + revision_t rev; get_work_rev(rev); N(rev.edges.size() == 1, F("this command can only be used in a single-parent workspace")); @@ -146,7 +146,7 @@ workspace::set_work_state(parent_map con roster_t const & new_roster) { revision_t rev; - make_revision_for_workspace(parents, new_roster); + make_revision_for_workspace(parents, new_roster, rev); put_work_rev(rev); } @@ -169,14 +169,13 @@ workspace::get_work_state_shape_only(par get_work_rev(rev); revision_id new_rid(fake_id()); - parent_map parents; db.get_parent_map(rev, parents); // FIXME: marking this roster is a big waste -- for merge rosters, for // instance, it requires an extra bunch of disk activity to fetch uncommon // ancestors, for no reason! marking_map dummy; - make_roster_for_revision(rev, parents, new_rid, ros, dummy, nis); + make_roster_for_revision(rev, parents, new_rid, ros, dummy, db, nis); } // user log file