# # # patch "Makefile.am" # from [dad72646e0e36c883b345af5bb380824654a6b9d] # to [34f9d6593da8c29d6c8181ceb0e4aa7d8dd2146f] # # patch "policy.cc" # from [04e59e18562970f23c3cd54af71fe2c9f9993d13] # to [55b709cb073727a7de346d24fae3a06246eef486] # # patch "project.cc" # from [f044809d9ed39307e1fa832b05ecccd4e3543083] # to [a5b5306c4f6ef39330ceeb6a6c5a44e38ef2fa6c] # # patch "project.hh" # from [ffe7dc72a2c7bef85019a87ba4f852e2e688c290] # to [7eb6378f35cb601d1d79c9edde39073372a0f7e5] # ============================================================ --- Makefile.am dad72646e0e36c883b345af5bb380824654a6b9d +++ Makefile.am 34f9d6593da8c29d6c8181ceb0e4aa7d8dd2146f @@ -330,13 +330,13 @@ UNIT_TEST_OBJ_SUPPORT = \ mtn-mtn-sanity.$(OBJEXT) mtn-options.$(OBJEXT) \ mtn-package_full_revision.$(OBJEXT) \ mtn-package_revision.$(OBJEXT) mtn-pcrewrap.$(OBJEXT) \ - mtn-project.$(OBJEXT) mtn-randomizer.$(OBJEXT) \ + mtn-policy.$(OBJEXT) mtn-project.$(OBJEXT) \ + mtn-randomizer.$(OBJEXT) \ mtn-sanity.$(OBJEXT) mtn-schema.$(OBJEXT) \ mtn-schema_migration.$(OBJEXT) \ mtn-specialized_lexical_cast.$(OBJEXT) mtn-ssh_agent.$(OBJEXT) \ mtn-std_hooks.$(OBJEXT) mtn-ui.$(OBJEXT) mtn-work.$(OBJEXT) \ mtn-work_migration.$(OBJEXT) - mtn-policy.$(OBJEXT) # primaries ============================================================ --- policy.cc 04e59e18562970f23c3cd54af71fe2c9f9993d13 +++ policy.cc 55b709cb073727a7de346d24fae3a06246eef486 @@ -9,6 +9,7 @@ #include "policy.hh" #include "project.hh" #include "revision.hh" +#include "roster.hh" #include "transforms.hh" using boost::shared_ptr; @@ -236,7 +237,7 @@ namespace struct not_in_managed_branch : public is_failure { database & db; - base64 const & branch_encoded; + cert_value const & branch; set const & trusted_signers; bool is_trusted(set const & signers, hexenc const & rid, @@ -253,16 +254,16 @@ namespace return false; } not_in_managed_branch(database & db, - base64 const & branch_encoded, + cert_value const & branch, set const & trusted) - : db(db), branch_encoded(branch_encoded), trusted_signers(trusted) + : db(db), branch(branch), trusted_signers(trusted) {} virtual bool operator()(revision_id const & rid) { vector< revision > certs; db.get_revision_certs(rid, cert_name(branch_cert_name), - branch_encoded, + branch, certs); erase_bogus_certs(db, boost::bind(¬_in_managed_branch::is_trusted, @@ -275,7 +276,7 @@ namespace struct suspended_in_managed_branch : public is_failure { database & db; - base64 const & branch_encoded; + cert_value const & branch; set const & trusted_signers; bool is_trusted(set const & signers, hexenc const & rid, @@ -292,16 +293,16 @@ namespace return false; } suspended_in_managed_branch(database & db, - base64 const & branch_encoded, + cert_value const & branch, set const & trusted) - : db(db), branch_encoded(branch_encoded), trusted_signers(trusted) + : db(db), branch(branch), trusted_signers(trusted) {} virtual bool operator()(revision_id const & rid) { vector< revision > certs; db.get_revision_certs(rid, cert_name(suspend_cert_name), - branch_encoded, + branch, certs); erase_bogus_certs(db, boost::bind(&suspended_in_managed_branch::is_trusted, @@ -321,18 +322,18 @@ get_branch_heads(branch_policy const & p * inverse_graph_cache_ptr) { outdated_indicator ret; - base64 branch_encoded; - encode_base64(cert_value(pol.branch_cert_value()), branch_encoded); ret = db.get_revisions_with_cert(cert_name(branch_cert_name), - branch_encoded, heads); + cert_value(pol.branch_cert_value()), heads); - not_in_managed_branch p(db, branch_encoded, pol.committers); + not_in_managed_branch p(db, cert_value(pol.branch_cert_value()), + pol.committers); erase_ancestors_and_failures(db, heads, p, inverse_graph_cache_ptr); if (!ignore_suspend_certs) { - suspended_in_managed_branch s(db, branch_encoded, pol.committers); + suspended_in_managed_branch s(db, cert_value(pol.branch_cert_value()), + pol.committers); std::set::iterator it = heads.begin(); while (it != heads.end()) { @@ -352,15 +353,13 @@ bool maybe_get_policy_branch_head(branch revision_id & rid) { L(FL("getting heads of policy branch %s") % name); - base64 branch_encoded; - encode_base64(cert_value(name()), branch_encoded); set heads; db.get_revisions_with_cert(cert_name(branch_cert_name), - branch_encoded, + cert_value(name()), heads); - not_in_managed_branch p(db, branch_encoded, trusted_signers); + not_in_managed_branch p(db, cert_value(name()), trusted_signers); erase_ancestors_and_failures(db, heads, p, NULL); if (heads.size() != 1) ============================================================ --- project.cc f044809d9ed39307e1fa832b05ecccd4e3543083 +++ project.cc a5b5306c4f6ef39330ceeb6a6c5a44e38ef2fa6c @@ -417,17 +417,17 @@ project_t::get_revision_branches(revisio branches.clear(); for (std::vector >::const_iterator i = certs.begin(); i != certs.end(); ++i) - branches.insert(branch_name(i->inner().value())); - + { if (project_policy->passthru) - branches.insert(branch_name(b())); + branches.insert(branch_name(i->inner().value())); else { std::set branchids; get_branch_list(branchids); - if (branchids.find(branch_uid(b())) != branchids.end()) - branches.insert(translate_branch(branch_uid(b()))); + if (branchids.find(branch_uid(i->inner().value())) != branchids.end()) + branches.insert(translate_branch(branch_uid(i->inner().value()))); } + } return i; } @@ -597,7 +597,7 @@ project_set::get_project(branch_prefix c return *project; } -project_t * const +project_t * project_set::maybe_get_project(branch_prefix const & name) { map::iterator i = projects.find(name); @@ -615,7 +615,7 @@ project_set::get_project_of_branch(branc return *project; } -project_t * const +project_t * project_set::maybe_get_project_of_branch(branch_name const & branch) { for (map::iterator i = projects.begin(); @@ -722,9 +722,7 @@ project_set::get_revision_branches(revis for (std::vector >::const_iterator i = certs.begin(); i != certs.end(); ++i) { - cert_value b; - decode_base64(i->inner().value, b); - branch_uid uid(b()); + branch_uid uid(i->inner().value()); for (project_map::iterator i = projects.begin(); i != projects.end(); ++i) ============================================================ --- project.hh ffe7dc72a2c7bef85019a87ba4f852e2e688c290 +++ project.hh 7eb6378f35cb601d1d79c9edde39073372a0f7e5 @@ -146,11 +146,11 @@ public: // Get a named project. project_t & get_project(branch_prefix const & name); - project_t * const maybe_get_project(branch_prefix const & name); + project_t * maybe_get_project(branch_prefix const & name); // Get the project containing a named branch. project_t & get_project_of_branch(branch_name const & branch); - project_t * const maybe_get_project_of_branch(branch_name const & branch); + project_t * maybe_get_project_of_branch(branch_name const & branch); // All branches in all projects. void get_branch_list(std::set & names,