# # patch "revision.cc" # from [9a0e2a37bb86d6b46fe68e0f42f6689f42288969] # to [01a7c3a6d3bc315f39eff7c6833ff681d90433f8] # # patch "roster4.cc" # from [4ba9dfed9ff47a4c82baeca39c7ac31e6660a773] # to [c2cf7808c90fa0525d4445f5b864eb8fdc54bdd5] # ======================================================================== --- revision.cc 9a0e2a37bb86d6b46fe68e0f42f6689f42288969 +++ revision.cc 01a7c3a6d3bc315f39eff7c6833ff681d90433f8 @@ -1098,6 +1098,34 @@ } } +struct +current_rev_debugger +{ + u64 node; + anc_graph const & agraph; + current_rev_debugger(u64 n, anc_graph const & ag) + : node(n), agraph(ag) + { + } +}; + +void +dump(current_rev_debugger const & d, std::string & out) +{ + typedef std::multimap >::const_iterator ci; + std::pair range = d.agraph.certs.equal_range(d.node); + for(ci i = range.first; i != range.second; ++i) + { + if (i->first == d.node) + { + out += "cert '" + i->second.first() + "'"; + out += "= '" + i->second.second() + "'\n"; + } + } +} + + + void anc_graph::construct_revisions_from_ancestry() { @@ -1136,6 +1164,10 @@ { u64 child = work.front(); + + current_rev_debugger dbg(child, *this); + MM(dbg); + work.pop_front(); std::pair parent_range = ancestry.equal_range(child); std::set parents; ======================================================================== --- roster4.cc 4ba9dfed9ff47a4c82baeca39c7ac31e6660a773 +++ roster4.cc c2cf7808c90fa0525d4445f5b864eb8fdc54bdd5 @@ -1089,6 +1089,10 @@ node_t n, marking_t & new_marking) { + + I(left_marking.birth_revision == right_marking.birth_revision); + new_marking.birth_revision = left_marking.birth_revision; + // name mark_merged_scalar(left_marking.parent_name, left_uncommon_ancestors, std::make_pair(ln->parent, ln->name), @@ -1237,7 +1241,7 @@ I(same_type(n, rn)); I(same_type(n, ln)); I(lmi->second.birth_revision == rmi->second.birth_revision); - marking_t marks(lmi->second.birth_revision, new_rid, n); + marking_t marks; mark_merged_node(lmi->second, left_uncommon_ancestors, ln, rmi->second, right_uncommon_ancestors, rn, new_rid, n, marks);