/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/versionedfile.py

  • Committer: Andrew Bennetts
  • Date: 2008-01-04 03:12:11 UTC
  • mfrom: (3164 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3320.
  • Revision ID: andrew.bennetts@canonical.com-20080104031211-wy4uxo2j4elvip1j
Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
517
517
        self._parents = {}
518
518
        self._lines = {}
519
519
 
520
 
    def plan_merge(self, ver_a, ver_b):
 
520
    def plan_merge(self, ver_a, ver_b, base=None):
521
521
        """See VersionedFile.plan_merge"""
522
 
        from merge import _PlanMerge
523
 
        return _PlanMerge(ver_a, ver_b, self).plan_merge()
 
522
        from bzrlib.merge import _PlanMerge
 
523
        if base is None:
 
524
            return _PlanMerge(ver_a, ver_b, self).plan_merge()
 
525
        old_plan = list(_PlanMerge(ver_a, base, self).plan_merge())
 
526
        new_plan = list(_PlanMerge(ver_a, ver_b, self).plan_merge())
 
527
        return _PlanMerge._subtract_plans(old_plan, new_plan)
 
528
 
 
529
    def plan_lca_merge(self, ver_a, ver_b, base=None):
 
530
        from bzrlib.merge import _PlanLCAMerge
 
531
        graph = self._get_graph()
 
532
        new_plan = _PlanLCAMerge(ver_a, ver_b, self, graph).plan_merge()
 
533
        if base is None:
 
534
            return new_plan
 
535
        old_plan = _PlanLCAMerge(ver_a, base, self, graph).plan_merge()
 
536
        return _PlanLCAMerge._subtract_plans(list(old_plan), list(new_plan))
524
537
 
525
538
    def add_lines(self, version_id, parents, lines):
526
539
        """See VersionedFile.add_lines
590
603
        else:
591
604
            raise errors.RevisionNotPresent(version_id, self._file_id)
592
605
 
 
606
    def _get_graph(self):
 
607
        from bzrlib.graph import (
 
608
            DictParentsProvider,
 
609
            Graph,
 
610
            _StackedParentsProvider,
 
611
            )
 
612
        from bzrlib.repofmt.knitrepo import _KnitParentsProvider
 
613
        parent_providers = [DictParentsProvider(self._parents)]
 
614
        for vf in self.fallback_versionedfiles:
 
615
            parent_providers.append(_KnitParentsProvider(vf))
 
616
        return Graph(_StackedParentsProvider(parent_providers))
 
617
 
593
618
 
594
619
class PlanWeaveMerge(TextMerge):
595
620
    """Weave merge that takes a plan as its input.
648
673
            elif state == 'new-b':
649
674
                ch_b = True
650
675
                lines_b.append(line)
 
676
            elif state == 'conflicted-a':
 
677
                ch_b = ch_a = True
 
678
                lines_a.append(line)
 
679
            elif state == 'conflicted-b':
 
680
                ch_b = ch_a = True
 
681
                lines_b.append(line)
651
682
            else:
652
683
                assert state in ('irrelevant', 'ghost-a', 'ghost-b', 
653
684
                                 'killed-base', 'killed-both'), state