# # # patch "README.encapsulation" # from [55e2d2ddaefb7fe1c4b081ac2d50f8b2692e057b] # to [81555580c9b40db3faef6b87b7b8f22db72497ed] # # patch "cmd_db.cc" # from [3337e33c3e7dab3bd3e20a62b6f669549e188699] # to [f0b71653f074699006a36446e744966d68a65b4b] # # patch "database.cc" # from [3763d91cc1b85dab06c0cb78cbcf695eb911a3fd] # to [b3ff574bbebad8a628f87459e9de14acba9a294c] # # patch "database.hh" # from [64e707abbe0f62b28b543e7d8a02bd75df04abab] # to [2513527037de44588eefe36d85a59a5d6295304f] # # patch "revision.cc" # from [c558597ffa870a502669d0620dae8f6f1567b1b9] # to [5e07f9ae09ef6703dfdc18417c3987f6efdbbac8] # # patch "revision.hh" # from [1c26954528febd8f966a7a9d1202cc60affc0d5f] # to [94e3723d36443c96cb5afbf00dbd3392b4de61a7] # ============================================================ --- README.encapsulation 55e2d2ddaefb7fe1c4b081ac2d50f8b2692e057b +++ README.encapsulation 81555580c9b40db3faef6b87b7b8f22db72497ed @@ -9,23 +9,8 @@ revision.cc: revision.cc: - struct anc_graph still uses app_state, while most methods only need the - database, these functions are exceptions: + only a CMD(rev_height is left using the app_state - anc_graph::construct_revisions_from_ancestry() - app.opts.attrs_to_drop - - - build_roster_style_revs_from_manifest_style_revs() - app.db.... - needs: anc_graph() - - - build_changesets_from_manifest_ancestry() - app.db... - needs: anc_graph() - - cert.cc: guess_branch(): @@ -167,4 +152,3 @@ next candidates for app_state removal: next candidates for app_state removal: project.cc: struct project_t - revision.cc: struct anc_graph ============================================================ --- cmd_db.cc 3337e33c3e7dab3bd3e20a62b6f669549e188699 +++ cmd_db.cc f0b71653f074699006a36446e744966d68a65b4b @@ -81,9 +81,9 @@ CMD(db, N_("database"), else if (idx(args, 0)() == "check") check_db(app); else if (idx(args, 0)() == "changesetify") - build_changesets_from_manifest_ancestry(app); + build_changesets_from_manifest_ancestry(app.db); else if (idx(args, 0)() == "rosterify") - build_roster_style_revs_from_manifest_style_revs(app); + build_roster_style_revs_from_manifest_style_revs(app.db); else if (idx(args, 0)() == "regenerate_caches") regenerate_caches(app.db); else ============================================================ --- database.cc 3763d91cc1b85dab06c0cb78cbcf695eb911a3fd +++ database.cc b3ff574bbebad8a628f87459e9de14acba9a294c @@ -3439,6 +3439,13 @@ database::get_key_store() return __app->keys; } +bool +database::must_drop_attr(string const & key) +{ + return (__app->opts.attrs_to_drop.find(key) != + __app->opts.attrs_to_drop.end()); +} + // transaction guards transaction_guard::transaction_guard(database & d, bool exclusive, ============================================================ --- database.hh 64e707abbe0f62b28b543e7d8a02bd75df04abab +++ database.hh 2513527037de44588eefe36d85a59a5d6295304f @@ -599,6 +599,7 @@ public: hexenc const & id, cert_name const & name, cert_value const & val); bool hook_get_author(rsa_keypair_id const & k, std::string & author); + bool must_drop_attr(std::string const & key); key_store & get_key_store(); }; ============================================================ --- revision.cc c558597ffa870a502669d0620dae8f6f1567b1b9 +++ revision.cc 5e07f9ae09ef6703dfdc18417c3987f6efdbbac8 @@ -829,9 +829,9 @@ struct anc_graph struct anc_graph { - anc_graph(bool existing, app_state & a) : + anc_graph(bool existing, database & db) : existing_graph(existing), - app(a), + db(db), max_node(0), n_nodes("nodes", "n", 1), n_certs_in("certs in", "c", 1), @@ -840,7 +840,7 @@ struct anc_graph {} bool existing_graph; - app_state & app; + database & db; u64 max_node; ticker n_nodes; @@ -903,7 +903,7 @@ void anc_graph::write_certs() encode_hexenc(data(string(buf, buf + constants::epochlen_bytes)), hexdata); epoch_data new_epoch(hexdata); L(FL("setting epoch for %s to %s") % *i % new_epoch); - app.db.set_epoch(branch_name(*i), new_epoch); + db.set_epoch(branch_name(*i), new_epoch); } } @@ -923,9 +923,9 @@ void anc_graph::write_certs() cert_value val(j->second.second); cert new_cert; - make_simple_cert(rev.inner(), name, val, app.db, new_cert); + make_simple_cert(rev.inner(), name, val, db, new_cert); revision rcert(new_cert); - if (app.db.put_revision_cert(rcert)) + if (db.put_revision_cert(rcert)) ++n_certs_out; } } @@ -1017,13 +1017,13 @@ anc_graph::rebuild_ancestry() P(F("rebuilding %d nodes") % max_node); { - transaction_guard guard(app.db); + transaction_guard guard(db); if (existing_graph) - app.db.delete_existing_revs_and_certs(); + db.delete_existing_revs_and_certs(); construct_revisions_from_ancestry(); write_certs(); if (existing_graph) - app.db.delete_existing_manifests(); + db.delete_existing_manifests(); guard.commit(); } } @@ -1043,8 +1043,8 @@ anc_graph::add_node_for_old_manifest(man // load certs vector< manifest > mcerts; - app.db.get_manifest_certs(man, mcerts); - erase_bogus_certs(mcerts, app.db); + db.get_manifest_certs(man, mcerts); + erase_bogus_certs(mcerts, db); for(vector< manifest >::const_iterator i = mcerts.begin(); i != mcerts.end(); ++i) { @@ -1075,7 +1075,7 @@ u64 anc_graph::add_node_for_oldstyle_rev manifest_id man; legacy::renames_map renames; - legacy::get_manifest_and_renames_for_rev(app.db, rev, man, renames); + legacy::get_manifest_and_renames_for_rev(db, rev, man, renames); L(FL("node %d = revision %s = manifest %s") % node % rev % man); old_rev_to_node.insert(make_pair(rev, node)); @@ -1085,8 +1085,8 @@ u64 anc_graph::add_node_for_oldstyle_rev // load certs vector< revision > rcerts; - app.db.get_revision_certs(rev, rcerts); - erase_bogus_certs(rcerts, app.db); + db.get_revision_certs(rev, rcerts); + erase_bogus_certs(rcerts, db); for(vector< revision >::const_iterator i = rcerts.begin(); i != rcerts.end(); ++i) { @@ -1452,7 +1452,7 @@ anc_graph::construct_revisions_from_ance get_node_manifest(child, old_child_mid); manifest_data mdat; - app.db.get_manifest_version(old_child_mid, mdat); + db.get_manifest_version(old_child_mid, mdat); legacy::read_manifest_map(mdat, old_child_man); // Load all the parent rosters into a temporary roster map @@ -1468,7 +1468,7 @@ anc_graph::construct_revisions_from_ance { shared_ptr ros = shared_ptr(new roster_t()); shared_ptr mm = shared_ptr(new marking_map()); - app.db.get_roster(safe_get(node_to_new_rev, parent), *ros, *mm); + db.get_roster(safe_get(node_to_new_rev, parent), *ros, *mm); safe_insert(parent_rosters, make_pair(parent, make_pair(ros, mm))); } } @@ -1508,7 +1508,7 @@ anc_graph::construct_revisions_from_ance if (i != old_child_man.end()) { file_data dat; - app.db.get_file_version(i->second, dat); + db.get_file_version(i->second, dat); legacy::dot_mt_attrs_map attrs; legacy::read_dot_mt_attrs(dat.inner(), attrs); for (legacy::dot_mt_attrs_map::const_iterator j = attrs.begin(); @@ -1525,7 +1525,7 @@ anc_graph::construct_revisions_from_ance k != fattrs.end(); ++k) { string key = k->first; - if (app.opts.attrs_to_drop.find(key) != app.opts.attrs_to_drop.end()) + if (db.must_drop_attr(key)) { // ignore it } @@ -1611,7 +1611,7 @@ anc_graph::construct_revisions_from_ance */ L(FL("mapped node %d to revision %s") % child % new_rid); - if (app.db.put_revision(new_rid, rev)) + if (db.put_revision(new_rid, rev)) ++n_revs_out; // Mark this child as done, hooray! @@ -1632,13 +1632,13 @@ void } void -build_roster_style_revs_from_manifest_style_revs(app_state & app) +build_roster_style_revs_from_manifest_style_revs(database & db) { - app.db.ensure_open_for_format_changes(); - app.db.check_is_not_rosterified(); + db.ensure_open_for_format_changes(); + db.check_is_not_rosterified(); real_sanity.set_relaxed(true); - anc_graph graph(true, app); + anc_graph graph(true, db); P(F("converting existing revision graph to new roster-style revisions")); multimap existing_graph; @@ -1646,8 +1646,8 @@ build_roster_style_revs_from_manifest_st { // early short-circuit to avoid failure after lots of work rsa_keypair_id key; - get_user_key(key, app.keys); - require_password(key, app.keys); + get_user_key(key, db.get_key_store()); + require_password(key, db.get_key_store()); } // cross-check that we're getting everything @@ -1657,9 +1657,9 @@ build_roster_style_revs_from_manifest_st // This code at least causes this case to throw an assertion; FIXME: make // this case actually work. set all_rev_ids; - app.db.get_revision_ids(all_rev_ids); + db.get_revision_ids(all_rev_ids); - app.db.get_revision_ancestry(existing_graph); + db.get_revision_ancestry(existing_graph); for (multimap::const_iterator i = existing_graph.begin(); i != existing_graph.end(); ++i) { @@ -1688,25 +1688,25 @@ void void -build_changesets_from_manifest_ancestry(app_state & app) +build_changesets_from_manifest_ancestry(database & db) { - app.db.ensure_open_for_format_changes(); - app.db.check_is_not_rosterified(); + db.ensure_open_for_format_changes(); + db.check_is_not_rosterified(); - anc_graph graph(false, app); + anc_graph graph(false, db); P(F("rebuilding revision graph from manifest certs")); { // early short-circuit to avoid failure after lots of work rsa_keypair_id key; - get_user_key(key, app.keys); - require_password(key, app.keys); + get_user_key(key, db.get_key_store()); + require_password(key, db.get_key_store()); } vector< manifest > tmp; - app.db.get_manifest_certs(cert_name("ancestor"), tmp); - erase_bogus_certs(tmp, app.db); + db.get_manifest_certs(cert_name("ancestor"), tmp); + erase_bogus_certs(tmp, db); for (vector< manifest >::const_iterator i = tmp.begin(); i != tmp.end(); ++i) ============================================================ --- revision.hh 1c26954528febd8f966a7a9d1202cc60affc0d5f +++ revision.hh 94e3723d36443c96cb5afbf00dbd3392b4de61a7 @@ -16,11 +16,9 @@ #include #include "cset.hh" -#include "vocab.hh" #include "database.hh" +#include "vocab.hh" -class app_state; - // a revision is a text object. It has a precise, normalizable serial form // as UTF-8 text. it also has some sub-components. not all of these // sub-components are separately serialized (they could be but there is no @@ -219,10 +217,10 @@ void std::string const & cmd_name); void -build_changesets_from_manifest_ancestry(app_state & app); +build_changesets_from_manifest_ancestry(database & db); void -build_roster_style_revs_from_manifest_style_revs(app_state & app); +build_roster_style_revs_from_manifest_style_revs(database & db); void regenerate_caches(database & db);