# # patch "cset.cc" # from [9a81e365c23c398b650e15250159133636792d01] # to [4437868d918c60e8586da13296abe867e0a81da0] # # patch "revision.cc" # from [c4cb0ffd9aa9bcc7e9f301b44e1e52a42779ea25] # to [7c8168a099c4b67af5d8542e5fb8ae6f6740ec89] # # patch "revision.hh" # from [6740497b6f3223f1cdd398e4bab8cd2e612d2fa4] # to [aece662eac3447fa9f61262ffed0233b8946729d] # # patch "roster4.cc" # from [8cdc18c0c9cf83f409c06f9b851da8f8f8f00570] # to [be716a012fd900e111a402790dee0b2757ad4d98] # # patch "roster4.hh" # from [6c18279af41fc5ba8efae787556d828320ac4531] # to [2cc7f694804a477762ad5a0fe5254362e54d36c2] # ======================================================================== --- cset.cc 9a81e365c23c398b650e15250159133636792d01 +++ cset.cc 4437868d918c60e8586da13296abe867e0a81da0 @@ -67,6 +67,8 @@ static void check_normalized(cset const & cs) { + MM(cs); + // FIXME -- normalize: // // add_file address@hidden + apply_delta id1->id2 ======================================================================== --- revision.cc c4cb0ffd9aa9bcc7e9f301b44e1e52a42779ea25 +++ revision.cc 7c8168a099c4b67af5d8542e5fb8ae6f6740ec89 @@ -1016,6 +1016,27 @@ > > parent_roster_map; +void +dump(parent_roster_map const & prm, std::string & out) +{ + std::ostringstream oss; + for (parent_roster_map::const_iterator i = prm.begin(); i != prm.end(); ++i) + { + oss << "roster: " << i->first << "\n"; + std::string roster_str, indented_roster_str; + dump(*i->second.first, roster_str); + prefix_lines_with(" ", roster_str, indented_roster_str); + oss << indented_roster_str; + oss << "\nroster's marking:\n"; + std::string marking_str, indented_marking_str; + dump(*i->second.second, marking_str); + prefix_lines_with(" ", marking_str, indented_marking_str); + oss << indented_marking_str; + oss << "\n\n"; + } + out = oss.str(); +} + static bool viable_replacement(std::map const & birth_revs, parent_roster_map const & parent_rosters, @@ -1308,6 +1329,7 @@ // Load all the parent rosters into a temporary roster map parent_roster_map parent_rosters; + MM(parent_rosters); for (ci i = parent_range.first; parents_all_done && i != parent_range.second; ++i) { @@ -1326,6 +1348,7 @@ // Convert the old-skool manifest into a cset adding all the // files in question, and build a roster out of that. roster_t child_roster; + MM(child_roster); temp_node_id_source nis; for (manifest_map::const_iterator i = old_child_man.begin(); i != old_child_man.end(); ++i) @@ -1338,6 +1361,7 @@ } revision_set rev; + MM(rev); calculate_ident(child_roster, rev.new_manifest); // For each parent, construct an edge in the revision structure by analyzing the @@ -1351,11 +1375,12 @@ revision_id parent_rid = safe_get(node_to_new_rev, parent); boost::shared_ptr parent_roster = i->second.first; 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, + std::make_pair(parent_manifest_id, cs))); } @@ -1369,6 +1394,7 @@ revision_id parent_rid; boost::shared_ptr parent_roster = boost::shared_ptr(new roster_t()); 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, @@ -1629,22 +1655,35 @@ rev.check_sane(); } +static void write_insane_revision_set(revision_set const & rev, + data & dat) +{ + std::ostringstream oss; + basic_io::printer pr(oss); + print_revision(pr, rev); + dat = data(oss.str()); +} + void +dump(revision_set const & rev, std::string & out) +{ + data dat; + write_insane_revision_set(rev, dat); + out = dat(); +} + +void write_revision_set(revision_set const & rev, data & dat) { rev.check_sane(); - std::ostringstream oss; - basic_io::printer pr(oss); - print_revision(pr, rev); - dat = data(oss.str()); + write_insane_revision_set(rev, dat); } void write_revision_set(revision_set const & rev, revision_data & dat) { - rev.check_sane(); data d; write_revision_set(rev, d); dat = revision_data(d); ======================================================================== --- revision.hh 6740497b6f3223f1cdd398e4bab8cd2e612d2fa4 +++ revision.hh aece662eac3447fa9f61262ffed0233b8946729d @@ -99,6 +99,9 @@ return *(i->second.second); } +void +dump(revision_set const & rev, std::string & out); + void read_revision_set(data const & dat, revision_set & rev); @@ -159,15 +162,15 @@ /* void calculate_composite_cset(revision_id const & ancestor, - revision_id const & child, - app_state & app, - cset & composed); + revision_id const & child, + app_state & app, + cset & composed); void calculate_arbitrary_cset(revision_id const & start, - revision_id const & end, - app_state & app, - cset & composed); + revision_id const & end, + app_state & app, + cset & composed); */ ======================================================================== --- roster4.cc 8cdc18c0c9cf83f409c06f9b851da8f8f8f00570 +++ roster4.cc be716a012fd900e111a402790dee0b2757ad4d98 @@ -17,6 +17,7 @@ #include "roster4.hh" #include "revision.hh" #include "vocab.hh" +#include "transforms.hh" #include @@ -46,7 +47,57 @@ out = oss.str(); } +void +dump(std::set const & revids, std::string & out) +{ + out.clear(); + bool first = true; + for (std::set::const_iterator i = revids.begin(); + i != revids.end(); ++i) + { + if (!first) + out += ", "; + first = false; + out += i->inner()(); + } +} +void +dump(marking_t const & marking, std::string & out) +{ + std::ostringstream oss; + std::string tmp; + oss << "birth_revision: " << marking.birth_revision << "\n"; + dump(marking.parent_name, tmp); + oss << "parent_name: " << tmp << "\n"; + dump(marking.file_content, tmp); + oss << "file_content: " << tmp << "\n"; + oss << "attrs (number: " << marking.attrs.size() << "):\n"; + for (std::map >::const_iterator + i = marking.attrs.begin(); i != marking.attrs.end(); ++i) + { + dump(i->second, tmp); + oss << " " << i->first << ": " << tmp << "\n"; + } + out = oss.str(); +} + +void +dump(marking_map const & marking_map, std::string & out) +{ + std::ostringstream oss; + for (marking_map::const_iterator i = marking_map.begin(); i != marking_map.end(); + ++i) + { + oss << "Marking for " << i->first << ":\n"; + std::string marking_str, indented_marking_str; + dump(i->second, marking_str); + prefix_lines_with(" ", marking_str, indented_marking_str); + oss << indented_marking_str; + } + out = oss.str(); +} + namespace { // ======================================================================== --- roster4.hh 6c18279af41fc5ba8efae787556d828320ac4531 +++ roster4.hh 2cc7f694804a477762ad5a0fe5254362e54d36c2 @@ -152,6 +152,10 @@ typedef std::map marking_map; +void dump(std::set & revids, std::string & out); +void dump(marking_t const & marking, std::string & out); +void dump(marking_map const & marking_map, std::string & out); + namespace basic_io { struct printer; struct parser; } class roster_t