591
591
self.add_version('REV2', ['ROOT'], 'abce')
592
592
# both sides merge, discarding others' changes
593
593
self.add_version('LCA1', ['REV1', 'REV2'], 'abcd')
594
self.add_version('LCA2', ['REV1', 'REV2'], 'abce')
594
self.add_version('LCA2', ['REV1', 'REV2'], 'fabce')
595
595
plan = self.plan_merge_vf.plan_lca_merge('LCA1', 'LCA2')
596
self.assertEqual([('unchanged', 'a\n'),
596
self.assertEqual([('new-b', 'f\n'),
597
('unchanged', 'a\n'),
597
598
('unchanged', 'b\n'),
598
599
('unchanged', 'c\n'),
599
600
('conflicted-a', 'd\n'),
600
601
('conflicted-b', 'e\n'),
605
class TestMergeImplementation(object):
607
def do_merge(self, target_tree, source_tree, **kwargs):
608
merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
609
target_tree, source_tree.last_revision(),
610
other_branch=source_tree.branch)
611
merger.merge_type=self.merge_type
612
for name, value in kwargs.items():
613
setattr(merger, name, value)
616
def test_merge_specific_file(self):
617
this_tree = self.make_branch_and_tree('this')
618
this_tree.lock_write()
619
self.addCleanup(this_tree.unlock)
620
self.build_tree_contents([
621
('this/file1', 'a\nb\n'),
622
('this/file2', 'a\nb\n')
624
this_tree.add(['file1', 'file2'])
625
this_tree.commit('Added files')
626
other_tree = this_tree.bzrdir.sprout('other').open_workingtree()
627
self.build_tree_contents([
628
('other/file1', 'a\nb\nc\n'),
629
('other/file2', 'a\nb\nc\n')
631
other_tree.commit('modified both')
632
self.build_tree_contents([
633
('this/file1', 'd\na\nb\n'),
634
('this/file2', 'd\na\nb\n')
636
this_tree.commit('modified both')
637
self.do_merge(this_tree, other_tree, interesting_files=['file1'])
638
self.assertFileEqual('d\na\nb\nc\n', 'this/file1')
639
self.assertFileEqual('d\na\nb\n', 'this/file2')
642
class TestMerge3Merge(TestCaseWithTransport, TestMergeImplementation):
644
merge_type = _mod_merge.Merge3Merger
647
class TestWeaveMerge(TestCaseWithTransport, TestMergeImplementation):
649
merge_type = _mod_merge.WeaveMerger
652
class TestLCAMerge(TestCaseWithTransport, TestMergeImplementation):
654
merge_type = _mod_merge.LCAMerger