Comment 3 for bug 282941

Revision history for this message
John A Meinel (jameinel) wrote :

So 'bzr pull' still uses set_parent_trees, only now that internally does "update_basis_by_delta" when there is only a single target tree.

I'm leaving this bug open, though, because there is still a little bit of double-handling. Specifically, Merge calls iter_changes and then processes it. And then we call WT.update_basis_by_delta(RevisionTree.inventory._make_delta(RevisionTree.inventory)), which is another iter_changes call.

Arguably what we would want is some way to get the iter_changes from the Merger object, and pass that through, rather than do 2 iter_changes.

The other bit is that we could at least re-use the basis_tree and revision_tree that "pull" is passing to Merger. In theory those trees have already loaded all the inventory pages that are interesting, rather than re-opening the repository.

However, in a tree with 70k entries and 10 changes in a given commit, by far the bulk of the time spent is re-writing the dirstate file. So until we make that faster (journal updates?), the overhead of doing 2 iter_changes calls doesn't really matter.