# # # patch "commands.cc" # from [ff34e552a53c8e03100a7d6cdba09de085421d5b] # to [24544d1a49e1527b11a06bcec1470258dce090b1] # # patch "database.cc" # from [89d38ab4620424410c7bb55f837364443c975900] # to [ef9b1b0d0967d3af9fce5568d3f3fb989b73475d] # # patch "database_check.cc" # from [7850476d369646786127fab5036b287d71e91a9c] # to [21a47ed13250bea14120762831143647ea258d9b] # # patch "merge.cc" # from [a4c1ca4f129940d245ad2f199bfb662cbfdfc0c5] # to [0a43fd276379e6739d864e075976c393c25cbacf] # # patch "rcs_import.cc" # from [4bbb9f7243a877d367cc47ceaf9385758ece37de] # to [7fdbbf5d3a09d91236dacff66bba8344ac3e1c75] # # patch "restrictions.cc" # from [5e937d86146454597d17d378728b942120c5097c] # to [52cd3bcb4af1ff9dce3cdfa303b8170d231f89d3] # # patch "revision.cc" # from [4d90ae5702de7fa4aa2b54ec576b56f6ae9c711c] # to [bff899afb15347ee83614fe090f8838f918f52cf] # # patch "revision.hh" # from [8863b12618d9ec380c9cea7d6f7bfa8c4ad8ad0d] # to [5e3733994a6c92c4f15f0d78aa26669458443d46] # ============================================================ --- commands.cc ff34e552a53c8e03100a7d6cdba09de085421d5b +++ commands.cc 24544d1a49e1527b11a06bcec1470258dce090b1 @@ -1108,14 +1108,15 @@ N(app.branch_name() != "", F("need --branch argument for disapproval")); edge_entry const & old_edge (*rev.edges.begin()); - rev_inverse.new_manifest = edge_old_manifest(old_edge); + app.db.get_revision_manifest(edge_old_revision(old_edge), + rev_inverse.new_manifest); { roster_t old_roster, new_roster; app.db.get_roster(edge_old_revision(old_edge), old_roster); app.db.get_roster(r, new_roster); make_cset(new_roster, old_roster, *cs_inverse); } - rev_inverse.edges.insert(make_pair(r, make_pair(rev.new_manifest, cs_inverse))); + rev_inverse.edges.insert(make_pair(r, cs_inverse)); { transaction_guard guard(app.db); ============================================================ --- database.cc 89d38ab4620424410c7bb55f837364443c975900 +++ database.cc ef9b1b0d0967d3af9fce5568d3f3fb989b73475d @@ -1545,10 +1545,7 @@ transaction_guard guard(*this); // Phase 2: construct a new roster and sanity-check its manifest_id - // against the manifest_id of the revision you're writing. Also, to be - // *totally* thorough, check the manifest_ids of the parents of the new - // rev you're making and make sure they match the calculated manifest_id - // of their associated rosters. + // against the manifest_id of the revision you're writing. roster_t ros; marking_map mm; { @@ -1557,19 +1554,6 @@ make_roster_for_revision(rev, new_id, ros, mm, *__app); calculate_ident(ros, roster_manifest_id); I(rev.new_manifest == roster_manifest_id); - for (edge_map::const_iterator i = rev.edges.begin(); - i != rev.edges.end(); ++i) - { - roster_t parent_roster; - marking_map ignored; - manifest_id parent_mid; - if (!edge_old_revision(i).inner()().empty()) - { - get_roster(edge_old_revision(i), parent_roster, ignored); - calculate_ident(parent_roster, parent_mid); - I(edge_old_manifest(i) == parent_mid); - } - } } // Phase 3: Write the revision data ============================================================ --- database_check.cc 7850476d369646786127fab5036b287d71e91a9c +++ database_check.cc 21a47ed13250bea14120762831143647ea258d9b @@ -371,24 +371,6 @@ for (edge_map::const_iterator edge = rev.edges.begin(); edge != rev.edges.end(); ++edge) { - // ignore [] -> [...] manifests - - manifest_id old = edge_old_manifest(edge); - if (!null_id(old)) - { - if (found_manifests.find(old) == found_manifests.end()) - checked_revisions[*i].missing_manifests++; - - /* TODO ROSTER: doesn't make sense with rosters - checked_manifests[edge_old_manifest(edge)].revision_refs++; - - if (!checked_manifests[edge_old_manifest(edge)].found) - checked_revisions[*i].missing_manifests++; - - if (checked_manifests[edge_old_manifest(edge)].missing_files > 0) - checked_revisions[*i].incomplete_manifests++; */ - } - // ignore [] -> [...] revisions // delay checking parents until we've processed all revisions ============================================================ --- merge.cc a4c1ca4f129940d245ad2f199bfb662cbfdfc0c5 +++ merge.cc 0a43fd276379e6739d864e075976c393c25cbacf @@ -52,7 +52,7 @@ if (!result.is_clean()) { L(F("unclean mark-merge: %d name conflicts, %d content conflicts, %d attr conflicts, " - "%d orphaned node conflicts, %d rename target conflicts, %d directory loop conflicts\n") + "%d orphaned node conflicts, %d rename target conflicts, %d directory loop conflicts\n") % result.node_name_conflicts.size() % result.file_content_conflicts.size() % result.node_attr_conflicts.size() @@ -198,21 +198,13 @@ calculate_ident(merged_roster, merged_rev.new_manifest); - manifest_id left_mid; - calculate_ident(left_roster, left_mid); boost::shared_ptr left_to_merged(new cset); make_cset(left_roster, merged_roster, *left_to_merged); - safe_insert(merged_rev.edges, std::make_pair(left_rid, - std::make_pair(left_mid, - left_to_merged))); + safe_insert(merged_rev.edges, std::make_pair(left_rid, left_to_merged)); - manifest_id right_mid; - calculate_ident(right_roster, right_mid); boost::shared_ptr right_to_merged(new cset); make_cset(right_roster, merged_roster, *right_to_merged); - safe_insert(merged_rev.edges, std::make_pair(right_rid, - std::make_pair(right_mid, - right_to_merged))); + safe_insert(merged_rev.edges, std::make_pair(right_rid, right_to_merged)); revision_data merged_data; write_revision_set(merged_rev, merged_data); ============================================================ --- rcs_import.cc 4bbb9f7243a877d367cc47ceaf9385758ece37de +++ rcs_import.cc 7fdbbf5d3a09d91236dacff66bba8344ac3e1c75 @@ -1024,7 +1024,6 @@ temp_node_id_source nis; editable_roster_base editable_ros; revision_id parent_rid, child_rid; - manifest_id parent_mid, child_mid; cluster_consumer(cvs_history & cvs, app_state & app, @@ -1454,13 +1453,13 @@ build_cset(c, *cs); cs->apply_to(editable_ros); + manifest_id child_mid; calculate_ident(ros, child_mid); rev->new_manifest = child_mid; - rev->edges.insert(make_pair(parent_rid, make_pair(parent_mid, cs))); + rev->edges.insert(make_pair(parent_rid, cs)); calculate_ident(*rev, child_rid); preps.push_back(prepared_revision(child_rid, rev, c)); parent_rid = child_rid; - parent_mid = child_mid; } ============================================================ --- restrictions.cc 5e937d86146454597d17d378728b942120c5097c +++ restrictions.cc 52cd3bcb4af1ff9dce3cdfa303b8170d231f89d3 @@ -211,7 +211,6 @@ cset & excluded) { revision_id old_revision_id; - manifest_id old_manifest_id; boost::shared_ptr cs(new cset()); path_set old_paths, new_paths; @@ -223,8 +222,6 @@ new_paths, *cs, excluded); - calculate_ident(old_roster, old_manifest_id); - temp_node_id_source nis; new_roster = old_roster; editable_roster_base er(new_roster, nis); @@ -261,8 +258,7 @@ restrict_cset(tmp_full, *cs, tmp_excluded, app); } - safe_insert(rev.edges, std::make_pair(old_revision_id, - std::make_pair(old_manifest_id, cs))); + safe_insert(rev.edges, std::make_pair(old_revision_id, cs)); } void ============================================================ --- revision.cc 4d90ae5702de7fa4aa2b54ec576b56f6ae9c711c +++ revision.cc bff899afb15347ee83614fe090f8838f918f52cf @@ -46,28 +46,18 @@ { for (edge_map::const_iterator i = edges.begin(); i != edges.end(); ++i) - { - I(null_id(edge_old_revision(*i))); - I(null_id(edge_old_manifest(*i))); - } + I(null_id(edge_old_revision(i))); } if (edges.size() == 1) { - // null revision is allowed iff there is a null manifest - I(null_id(edge_old_revision(edges.begin())) - == null_id(edge_old_manifest(edges.begin()))); + // no particular checks to be done right now } - else if (edges.size() == 2) + if (edges.size() == 2) { - // merge nodes cannot have null revisions or null manifests, ever + // merge nodes cannot have null revisions for (edge_map::const_iterator i = edges.begin(); i != edges.end(); ++i) - { - I(!null_id(edge_old_revision(i))); - I(!null_id(edge_old_manifest(i))); - if (!(new_manifest == edge_old_manifest(i))) - I(!edge_changes(i).empty()); - } + I(!null_id(edge_old_revision(i))); } else // revisions must always have either 1 or 2 edges @@ -1260,11 +1250,7 @@ boost::shared_ptr cs = boost::shared_ptr(new cset()); MM(*cs); make_cset(*parent_roster, child_roster, *cs); - manifest_id parent_manifest_id; - calculate_ident(*parent_roster, parent_manifest_id); - safe_insert(rev.edges, std::make_pair(parent_rid, - std::make_pair(parent_manifest_id, cs))); - + safe_insert(rev.edges, std::make_pair(parent_rid, cs)); } // It is possible that we're at a "root" node here -- a node @@ -1279,9 +1265,7 @@ boost::shared_ptr cs = boost::shared_ptr(new cset()); MM(*cs); make_cset(*parent_roster, child_roster, *cs); - manifest_id parent_manifest_id; - safe_insert (rev.edges, std::make_pair (parent_rid, - std::make_pair (parent_manifest_id, cs))); + safe_insert(rev.edges, std::make_pair (parent_rid, cs)); } @@ -1458,7 +1442,6 @@ { basic_io::stanza st; st.push_hex_pair(syms::old_revision, edge_old_revision(e).inner()()); - st.push_hex_pair(syms::old_manifest, edge_old_manifest(e).inner()()); printer.print_stanza(st); print_cset(printer, edge_changes(e)); } @@ -1492,13 +1475,9 @@ parser.hex(tmp); old_rev = revision_id(tmp); - parser.esym(syms::old_manifest); - parser.hex(tmp); - old_man = manifest_id(tmp); - parse_cset(parser, *cs); - es.insert(std::make_pair(old_rev, std::make_pair(old_man, cs))); + es.insert(std::make_pair(old_rev, cs)); } ============================================================ --- revision.hh 8863b12618d9ec380c9cea7d6f7bfa8c4ad8ad0d +++ revision.hh 5e3733994a6c92c4f15f0d78aa26669458443d46 @@ -45,7 +45,7 @@ // from [95b50ede90037557fd0fbbfad6a9fdd67b0bf413] // to [bd39086b9da776fc22abd45734836e8afb59c8c0] -typedef std::map > > +typedef std::map > edge_map; typedef edge_map::value_type @@ -78,28 +78,16 @@ return i->first; } -inline manifest_id const & -edge_old_manifest(edge_entry const & e) -{ - return e.second.first; -} - -inline manifest_id const & -edge_old_manifest(edge_map::const_iterator i) -{ - return i->second.first; -} - inline cset const & edge_changes(edge_entry const & e) { - return *(e.second.second); + return *(e.second); } inline cset const & edge_changes(edge_map::const_iterator i) { - return *(i->second.second); + return *(i->second); } void