コード例 #1
0
 def test_make_preview_transform(self):
     this_tree = self.make_branch_and_tree('this')
     self.build_tree_contents([('this/file', '1\n')])
     this_tree.add('file', 'file-id')
     this_tree.commit('rev1', rev_id='rev1')
     other_tree = this_tree.bzrdir.sprout('other').open_workingtree()
     self.build_tree_contents([('this/file', '1\n2a\n')])
     this_tree.commit('rev2', rev_id='rev2a')
     self.build_tree_contents([('other/file', '2b\n1\n')])
     other_tree.commit('rev2', rev_id='rev2b')
     this_tree.lock_write()
     self.addCleanup(this_tree.unlock)
     merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
         this_tree, 'rev2b', other_branch=other_tree.branch)
     merger.merge_type = _mod_merge.Merge3Merger
     tree_merger = merger.make_merger()
     tt = tree_merger.make_preview_transform()
     self.addCleanup(tt.finalize)
     preview_tree = tt.get_preview_tree()
     tree_file = this_tree.get_file('file-id')
     try:
         self.assertEqual('1\n2a\n', tree_file.read())
     finally:
         tree_file.close()
     preview_file = preview_tree.get_file('file-id')
     try:
         self.assertEqual('2b\n1\n2a\n', preview_file.read())
     finally:
         preview_file.close()
コード例 #2
0
 def test_weave_cherrypick(self):
     this_tree, other_tree = self.prepare_cherrypick()
     merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
         this_tree, 'rev3b', 'rev2b', other_tree.branch)
     merger.merge_type = _mod_merge.WeaveMerger
     merger.do_merge()
     self.assertFileEqual('c\na\n', 'this/file')
コード例 #3
0
 def do_merge(self, target_tree, source_tree, **kwargs):
     merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
         target_tree, source_tree.last_revision(),
         other_branch=source_tree.branch)
     merger.merge_type=self.merge_type
     for name, value in kwargs.items():
         setattr(merger, name, value)
     merger.do_merge()
コード例 #4
0
ファイル: test_merge_core.py プロジェクト: saminigod/cygwin
 def test_from_mergeable(self):
     this, other = self.prepare_for_merging()
     md = merge_directive.MergeDirective2.from_objects(
         other.branch.repository, 'rev3', 0, 0, 'this')
     other.lock_read()
     self.addCleanup(other.unlock)
     merger, verified = Merger.from_mergeable(this, md,
                                              progress.DummyProgress())
     md.patch = None
     merger, verified = Merger.from_mergeable(this, md,
                                              progress.DummyProgress())
     self.assertEqual('inapplicable', verified)
     self.assertEqual('rev3', merger.other_rev_id)
     self.assertEqual('rev1', merger.base_rev_id)
     md.base_revision_id = 'rev2b'
     merger, verified = Merger.from_mergeable(this, md,
                                              progress.DummyProgress())
     self.assertEqual('rev2b', merger.base_rev_id)
コード例 #5
0
ファイル: test_merge_core.py プロジェクト: saminigod/cygwin
 def test_from_revision_ids(self):
     this, other = self.set_up_trees()
     self.assertRaises(errors.NoSuchRevision, Merger.from_revision_ids,
                       progress.DummyProgress(), this, 'rev2b')
     this.lock_write()
     self.addCleanup(this.unlock)
     merger = Merger.from_revision_ids(progress.DummyProgress(),
                                       this,
                                       'rev2b',
                                       other_branch=other.branch)
     self.assertEqual('rev2b', merger.other_rev_id)
     self.assertEqual('rev1', merger.base_rev_id)
     merger = Merger.from_revision_ids(progress.DummyProgress(),
                                       this,
                                       'rev2b',
                                       'rev2a',
                                       other_branch=other.branch)
     self.assertEqual('rev2a', merger.base_rev_id)
コード例 #6
0
 def test_convert_knit_dirstate_empty(self):
     # test that asking for an upgrade from knit to dirstate works.
     tree = self.make_branch_and_tree('tree', format='knit')
     target = bzrdir.format_registry.make_bzrdir('dirstate')
     converter = tree.bzrdir._format.get_converter(target)
     converter.convert(tree.bzrdir, progress.DummyProgress())
     new_tree = workingtree.WorkingTree.open('tree')
     self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
     self.assertEqual('null:', new_tree.last_revision())
コード例 #7
0
ファイル: test_merge_core.py プロジェクト: saminigod/cygwin
 def test_from_mergeable_old_merge_directive(self):
     this, other = self.prepare_for_merging()
     other.lock_write()
     self.addCleanup(other.unlock)
     md = merge_directive.MergeDirective.from_objects(
         other.branch.repository, 'rev3', 0, 0, 'this')
     merger, verified = Merger.from_mergeable(this, md,
                                              progress.DummyProgress())
     self.assertEqual('rev3', merger.other_rev_id)
     self.assertEqual('rev1', merger.base_rev_id)
コード例 #8
0
 def test_convert_knit_dirstate_content(self):
     # smoke test for dirstate conversion: we call dirstate primitives,
     # and its there that the core logic is tested.
     tree = self.make_branch_and_tree('tree', format='knit')
     self.build_tree(['tree/file'])
     tree.add(['file'], ['file-id'])
     target = bzrdir.format_registry.make_bzrdir('dirstate')
     converter = tree.bzrdir._format.get_converter(target)
     converter.convert(tree.bzrdir, progress.DummyProgress())
     new_tree = workingtree.WorkingTree.open('tree')
     self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
     self.assertEqual('null:', new_tree.last_revision())
コード例 #9
0
 def test_merge_uncommitted_otherbasis_ancestor_of_thisbasis_weave(self):
     tree_a = self.make_branch_and_tree('a')
     self.build_tree(['a/file_1', 'a/file_2'])
     tree_a.add(['file_1'])
     tree_a.commit('commit 1')
     tree_a.add(['file_2'])
     tree_a.commit('commit 2')
     tree_b = tree_a.bzrdir.sprout('b').open_workingtree()
     tree_b.rename_one('file_1', 'renamed')
     merger = _mod_merge.Merger.from_uncommitted(tree_a, tree_b,
                                                 progress.DummyProgress())
     merger.merge_type = _mod_merge.WeaveMerger
     merger.do_merge()
     self.assertEqual(tree_a.get_parent_ids(), [tree_b.last_revision()])
コード例 #10
0
    def test_convert_branch5_branch6(self):
        branch = self.make_branch('branch', format='knit')
        branch.set_revision_history(['AB', 'CD'])
        branch.set_parent('file:///EF')
        branch.set_bound_location('file:///GH')
        branch.set_push_location('file:///IJ')
        target = bzrdir.format_registry.make_bzrdir('dirstate-with-subtree')
        converter = branch.bzrdir._format.get_converter(target)
        converter.convert(branch.bzrdir, progress.DummyProgress())
        new_branch = _mod_branch.Branch.open(self.get_url('branch'))
        self.assertIs(new_branch.__class__, _mod_branch.BzrBranch6)
        self.assertEqual('CD', new_branch.last_revision())
        self.assertEqual('file:///EF', new_branch.get_parent())
        self.assertEqual('file:///GH', new_branch.get_bound_location())
        branch_config = new_branch.get_config()._get_branch_data_config()
        self.assertEqual('file:///IJ',
                         branch_config.get_user_option('push_location'))

        branch2 = self.make_branch('branch2', format='knit')
        converter = branch2.bzrdir._format.get_converter(target)
        converter.convert(branch2.bzrdir, progress.DummyProgress())
        branch2 = _mod_branch.Branch.open(self.get_url('branch'))
        self.assertIs(branch2.__class__, _mod_branch.BzrBranch6)
コード例 #11
0
 def test_convert_knit_one_parent_dirstate(self):
     # test that asking for an upgrade from knit to dirstate works.
     tree = self.make_branch_and_tree('tree', format='knit')
     rev_id = tree.commit('first post')
     target = bzrdir.format_registry.make_bzrdir('dirstate')
     converter = tree.bzrdir._format.get_converter(target)
     converter.convert(tree.bzrdir, progress.DummyProgress())
     new_tree = workingtree.WorkingTree.open('tree')
     self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
     self.assertEqual(rev_id, new_tree.last_revision())
     for path in [
             'basis-inventory-cache', 'inventory', 'last-revision',
             'pending-merges', 'stat-cache'
     ]:
         self.failIfExists('tree/.bzr/checkout/' + path)
コード例 #12
0
 def test_convert_knit_merges_dirstate(self):
     tree = self.make_branch_and_tree('tree', format='knit')
     rev_id = tree.commit('first post')
     merge_tree = tree.bzrdir.sprout('tree2').open_workingtree()
     rev_id2 = tree.commit('second post')
     rev_id3 = merge_tree.commit('second merge post')
     tree.merge_from_branch(merge_tree.branch)
     target = bzrdir.format_registry.make_bzrdir('dirstate')
     converter = tree.bzrdir._format.get_converter(target)
     converter.convert(tree.bzrdir, progress.DummyProgress())
     new_tree = workingtree.WorkingTree.open('tree')
     self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
     self.assertEqual(rev_id2, new_tree.last_revision())
     self.assertEqual([rev_id2, rev_id3], new_tree.get_parent_ids())
     for path in [
             'basis-inventory-cache', 'inventory', 'last-revision',
             'pending-merges', 'stat-cache'
     ]:
         self.failIfExists('tree/.bzr/checkout/' + path)
コード例 #13
0
    def test_merge3_will_detect_cherrypick(self):
        this_tree = self.make_branch_and_tree('this')
        self.build_tree_contents([('this/file', "a\n")])
        this_tree.add('file')
        this_tree.commit('rev1')
        other_tree = this_tree.bzrdir.sprout('other').open_workingtree()
        self.build_tree_contents([('other/file', "a\nb\n")])
        other_tree.commit('rev2b', rev_id='rev2b')
        self.build_tree_contents([('other/file', "a\nb\nc\n")])
        other_tree.commit('rev3b', rev_id='rev3b')
        this_tree.lock_write()
        self.addCleanup(this_tree.unlock)

        merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
            this_tree, 'rev3b', 'rev2b', other_tree.branch)
        merger.merge_type = _mod_merge.Merge3Merger
        merger.do_merge()
        self.assertFileEqual('a\n'
                             '<<<<<<< TREE\n'
                             '=======\n'
                             'c\n'
                             '>>>>>>> MERGE-SOURCE\n',
                             'this/file')
コード例 #14
0
 def test_merge3_can_reverse_cherrypick(self):
     this_tree, other_tree = self.prepare_cherrypick()
     merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
         this_tree, 'rev2b', 'rev3b', other_tree.branch)
     merger.merge_type = _mod_merge.Merge3Merger
     merger.do_merge()
コード例 #15
0
 def test_weave_cannot_reverse_cherrypick(self):
     this_tree, other_tree = self.prepare_cherrypick()
     merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
         this_tree, 'rev2b', 'rev3b', other_tree.branch)
     merger.merge_type = _mod_merge.WeaveMerger
     self.assertRaises(errors.CannotReverseCherrypick, merger.do_merge)
コード例 #16
0
ファイル: test_merge_core.py プロジェクト: saminigod/cygwin
 def test_from_uncommitted(self):
     this, other = self.set_up_trees()
     merger = Merger.from_uncommitted(this, other, progress.DummyProgress())
     self.assertIs(other, merger.other_tree)
     self.assertIs(None, merger.other_rev_id)
     self.assertEqual('rev2b', merger.base_rev_id)