~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/merge.py

  • Committer: John Arbash Meinel
  • Date: 2008-07-11 21:41:24 UTC
  • mto: This revision was merged to the branch mainline in revision 3543.
  • Revision ID: john@arbash-meinel.com-20080711214124-qi09irlj7pd5cuzg
Shortcut the case when one revision is in the ancestry of the other.

At the cost of a heads() check, when one parent supersedes, we don't have to extract
the text for the other. Changes merge time from 3m37s => 3m21s. Using a
CachingParentsProvider would drop the time down to 3m11s.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1400
1400
        self.a_key = self._key_prefix + (self.a_rev,)
1401
1401
        self.b_key = self._key_prefix + (self.b_rev,)
1402
1402
        self.graph = Graph(self.vf)
1403
 
        # heads = self.graph.heads((self.a_key, self.b_key))
1404
 
        # if len(heads) == 1:
1405
 
        #     # one side dominates, so we can just return its values, yay for
1406
 
        #     # per-file graphs
1407
 
        #     # Ideally we would know that before we get this far
1408
 
        #     self._head_key = heads.pop()
1409
 
        #     if self._head_key == self.a_key:
1410
 
        #         other = b_rev
1411
 
        #     else:
1412
 
        #         other = a_rev
1413
 
        #     mutter('found dominating revision for %s\n%s > %s', self.vf,
1414
 
        #            self._head_key[-1], other)
1415
 
        #     self._weave = None
1416
 
        # else:
1417
 
        self._head_key = None
1418
 
        self._build_weave()
 
1403
        heads = self.graph.heads((self.a_key, self.b_key))
 
1404
        if len(heads) == 1:
 
1405
            # one side dominates, so we can just return its values, yay for
 
1406
            # per-file graphs
 
1407
            # Ideally we would know that before we get this far
 
1408
            self._head_key = heads.pop()
 
1409
            if self._head_key == self.a_key:
 
1410
                other = b_rev
 
1411
            else:
 
1412
                other = a_rev
 
1413
            mutter('found dominating revision for %s\n%s > %s', self.vf,
 
1414
                   self._head_key[-1], other)
 
1415
            self._weave = None
 
1416
        else:
 
1417
            self._head_key = None
 
1418
            self._build_weave()
1419
1419
 
1420
1420
    def _precache_tip_lines(self):
1421
1421
        # Turn this into a no-op, because we will do this later