/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/merge.py

Implemented reprocess for weave

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
from bzrlib.transform import (TreeTransform, resolve_conflicts, cook_conflicts,
45
45
                              conflicts_strings, FinalPaths, create_by_entry,
46
46
                              unique_add)
 
47
from bzrlib.versionedfile import WeaveMerge
47
48
import bzrlib.ui
48
49
 
49
50
# TODO: Report back as changes are merged in
244
245
            kwargs['reprocess'] = self.reprocess
245
246
        elif self.reprocess:
246
247
            raise BzrError("Reprocess is not supported for this merge"
247
 
                                  " type. %s" % merge_type)
 
248
                                  " type. %s" % self.merge_type)
248
249
        if self.merge_type.supports_show_base:
249
250
            kwargs['show_base'] = self.show_base
250
251
        elif self.show_base:
747
748
 
748
749
class WeaveMerger(Merge3Merger):
749
750
    """Three-way tree merger, text weave merger."""
750
 
    supports_reprocess = False
 
751
    supports_reprocess = True
751
752
    supports_show_base = False
752
753
 
753
754
    def __init__(self, working_tree, this_tree, base_tree, other_tree, 
754
 
                 interesting_ids=None, pb=DummyProgress(), pp=None):
 
755
                 interesting_ids=None, pb=DummyProgress(), pp=None,
 
756
                 reprocess=False):
755
757
        self.this_revision_tree = self._get_revision_tree(this_tree)
756
758
        self.other_revision_tree = self._get_revision_tree(other_tree)
757
759
        super(WeaveMerger, self).__init__(working_tree, this_tree, 
758
760
                                          base_tree, other_tree, 
759
761
                                          interesting_ids=interesting_ids, 
760
 
                                          pb=pb, pp=pp)
 
762
                                          pb=pb, pp=pp, reprocess=reprocess)
761
763
 
762
764
    def _get_revision_tree(self, tree):
763
765
        """Return a revision tree releated to this tree.
788
790
        other_revision_id = \
789
791
            self.other_revision_tree.inventory[file_id].revision
790
792
        plan =  weave.plan_merge(this_revision_id, other_revision_id)
791
 
        return weave.weave_merge(plan, '<<<<<<< TREE\n', 
792
 
                                       '>>>>>>> MERGE-SOURCE\n')
 
793
        wm = WeaveMerge(plan, '<<<<<<< TREE\n', '>>>>>>> MERGE-SOURCE\n')
 
794
        return wm.merge_lines(self.reprocess)
793
795
 
794
796
    def text_merge(self, file_id, trans_id):
795
797
        """Perform a (weave) text merge for a given file and file-id.