# # patch "ChangeLog" # from [1dc7b6c7e44de2ac653f2767618f843f9ec84975] # to [045666a0fe3195fdfc0107d235b5a900215f957d] # # patch "commands.cc" # from [b5da86e6f37b0e8e2d5562077d0dc93561c2318b] # to [ac86cacd256f60c6d646f5fd4e9b747fd962838c] # ======================================================================== --- ChangeLog 1dc7b6c7e44de2ac653f2767618f843f9ec84975 +++ ChangeLog 045666a0fe3195fdfc0107d235b5a900215f957d @@ -1,5 +1,9 @@ 2005-08-22 Timothy Brownawell + * commands.cc: remove tree merger from the pcdv test driver + +2005-08-22 Timothy Brownawell + * change_set.cc (process_filetree_history): Only go back to the lcad. Prehistory isn't needed for merging, and slows things down a lot. ======================================================================== --- commands.cc b5da86e6f37b0e8e2d5562077d0dc93561c2318b +++ commands.cc ac86cacd256f60c6d646f5fd4e9b747fd962838c @@ -3864,162 +3864,6 @@ } } -void -prdiff(change_set::path_rearrangement const & a, - change_set::path_rearrangement const & b) -{ - std::set::const_iterator sa, sb; - std::map::const_iterator ma, mb; - - sa = a.deleted_files.begin(); - sb = b.deleted_files.begin(); - while (sa != a.deleted_files.end() || sb != b.deleted_files.end()) - { - if (sa == a.deleted_files.end()) - { - P(F("> delete_file %1%") % *sb); - ++sb; - } - else if (sb == b.deleted_files.end()) - { - P(F("< delete_file %1%") % *sa); - ++sa; - } - else if (*sa < *sb) - { - P(F("< delete_file %1%") % *sa); - ++sa; - } - else if (*sb < *sa) - { - P(F("> delete_file %1%") % *sb); - ++sb; - } - else - ++sa, ++sb; - } - - sa = a.deleted_dirs.begin(); - sb = b.deleted_dirs.begin(); - while (sa != a.deleted_dirs.end() || sb != b.deleted_dirs.end()) - { - if (sa == a.deleted_dirs.end()) - { - P(F("> delete_dir %1%") % *sb); - ++sb; - } - else if (sb == b.deleted_dirs.end()) - { - P(F("< delete_dir %1%") % *sa); - ++sa; - } - else if (*sa < *sb) - { - P(F("< delete_dir %1%") % *sa); - ++sa; - } - else if (*sb < *sa) - { - P(F("> delete_dir %1%") % *sb); - ++sb; - } - else - ++sa, ++sb; - } - - sa = a.added_files.begin(); - sb = b.added_files.begin(); - while (sa != a.added_files.end() || sb != b.added_files.end()) - { - if (sa == a.added_files.end()) - { - P(F("> add_file %1%") % *sb); - ++sb; - } - else if (sb == b.added_files.end()) - { - P(F("< add_file %1%") % *sa); - ++sa; - } - else if (*sa < *sb) - { - P(F("< add_file %1%") % *sa); - ++sa; - } - else if (*sb < *sa) - { - P(F("> add_file %1%") % *sb); - ++sb; - } - else - ++sa, ++sb; - } - - ma = a.renamed_files.begin(); - mb = b.renamed_files.begin(); - while (ma != a.renamed_files.end() || mb != b.renamed_files.end()) - { - if (ma == a.renamed_files.end()) - { - P(F("> rename_file %1%") % mb->first); - P(F("> to %1%") % mb->second); - ++mb; - } - else if (mb == b.renamed_files.end()) - { - P(F("< rename_file %1%") % ma->first); - P(F("> to %1%") % ma->second); - ++ma; - } - else if (*ma < *mb) - { - P(F("< rename_file %1%") % ma->first); - P(F("> to %1%") % ma->second); - ++ma; - } - else if (*mb < *ma) - { - P(F("> rename_file %1%") % mb->first); - P(F("> to %1%") % mb->second); - ++mb; - } - else - ++ma, ++mb; - } - - ma = a.renamed_dirs.begin(); - mb = b.renamed_dirs.begin(); - while (ma != a.renamed_dirs.end() || mb != b.renamed_dirs.end()) - { - if (ma == a.renamed_dirs.end()) - { - P(F("> rename_dir %1%") % mb->first); - P(F("> to %1%") % mb->second); - ++mb; - } - else if (mb == b.renamed_dirs.end()) - { - P(F("< rename_dir %1%") % ma->first); - P(F("> to %1%") % ma->second); - ++ma; - } - else if (*ma < *mb) - { - P(F("< rename_dir %1%") % ma->first); - P(F("> to %1%") % ma->second); - ++ma; - } - else if (*mb < *ma) - { - P(F("> rename_dir %1%") % mb->first); - P(F("> to %1%") % mb->second); - ++mb; - } - else - ++ma, ++mb; - } -} - CMD(pcdv, "debug", "REVISION REVISION FILENAME", "precise-cdv merge FILENAME in the two given revisions", OPT_NONE) @@ -4059,50 +3903,10 @@ map files; file_state empty(file_state::new_file()); file_state p(empty); - std::map trees; - tree_state emptytree(tree_state::new_tree()); bool found_right = false; bool found_left = false; while (!roots.empty() && !(found_right && found_left)) { - revision_set rs; - app.db.get_revision(roots.front(), rs); - std::vector treevec; - std::vector revec; - for (edge_map::const_iterator i = rs.edges.begin(); - i != rs.edges.end(); ++i) - { - tree_state from(emptytree); - if (edge_old_revision(i) == revision_id()) - from = emptytree; - else - { - std::map::iterator - j = trees.find(edge_old_revision(i)); - I(j != trees.end()); - from = j->second; - } - treevec.push_back(from); - revec.push_back(edge_changes(i).rearrangement); - } - tree_state newtree(tree_state::merge_with_rearrangement(treevec, revec, - roots.front().inner()())); - if (rs.edges.size() > 1) - for (unsigned int i = 0; i != rs.edges.size(); ++i) - { - std::set res; - change_set::path_rearrangement changes; - idx(treevec, i).get_changes_for_merge(newtree, changes); - if (!(idx(revec, i) == changes)) - { -// P(F("From parent #%1% to %2%") % i % roots.front()); -// P(F("Real vs. calc")); -// prdiff(idx(revec, i), changes); -// I(false); - } - } - trees.insert(make_pair(roots.front(), newtree)); - std::map >::const_iterator i(fileids.find(roots.front())); if (i != fileids.end()) @@ -4153,7 +3957,6 @@ && right.inner()() != i->inner()()) { files.erase(*i); - trees.erase(*i); } } } @@ -4168,52 +3971,6 @@ roots.pop_front(); } - std::map::const_iterator lt(trees.find(left)); - std::map::const_iterator rt(trees.find(right)); - I(lt != trees.end()); - I(rt != trees.end()); - std::vector conf(lt->second.conflict(rt->second)); -/* - std::vector > t(lt->second.current()); - for (std::vector >::const_iterator - i = t.begin(); i != t.end(); ++i) - { - P(F("%1%: %2%") % i->first % i->second); - } -*/ - P(F("There are %1% conflicts:") % conf.size()); - for (std::vector::const_iterator i = conf.begin(); - i != conf.end(); ++i) - { - P(F("Type: %1%") % ((i->type == path_conflict::collision) - ?"Collision":"Split")); - for (unsigned int j = 0; j < i->items.size(); ++j) - { - P(F("Item %1%:") % idx(i->items, j)); - P(F("Lname: %1%") % idx(i->lnames, j)); - P(F("Rname: %1%") % idx(i->rnames, j)); - } - P(F("Name: %1%") % i->name); - } - if (conf.empty()) - { - std::set res; - std::vector parents; - parents.push_back(lt->second); - parents.push_back(rt->second); - change_set::path_rearrangement changes; - data dat; - tree_state mt(tree_state::merge_with_resolution(parents, res, "xxx")); - lt->second.get_changes_for_merge(mt, changes); -// P(F("Left changes:")); -// write_path_rearrangement(changes, dat); -// P(F("%1%") % dat); - rt->second.get_changes_for_merge(mt, changes); -// P(F("Right changes:")); -// write_path_rearrangement(changes, dat); -// P(F("%1%") % dat); - } - map::iterator l = files.find(left); N(l != files.end(), F("Not found: %s.") % left); map::iterator r = files.find(right);