8
from bzrlib.selftest import TestCaseInTempDir, TestCase
8
from bzrlib.tests import TestCaseInTempDir, TestCase
9
9
from bzrlib.branch import ScratchBranch, Branch
10
10
from bzrlib.errors import (NotBranchError, NotVersionedError,
11
11
WorkingTreeNotRevision, BzrCommandError)
19
19
get_contents, ReplaceContents, ChangeExecFlag
20
20
from bzrlib.clone import copy_branch
21
21
from bzrlib.merge import merge
22
from bzrlib.workingtree import WorkingTree
24
25
class FalseTree(object):
536
537
def test_trivial_star_merge(self):
537
538
"""Test that merges in a star shape Just Work."""
538
from bzrlib.add import smart_add_branch, add_reporter_null
539
from bzrlib.add import smart_add_tree, add_reporter_null
539
540
from bzrlib.clone import copy_branch
540
541
from bzrlib.merge import merge
541
542
# John starts a branch
542
543
self.build_tree(("original/", "original/file1", "original/file2"))
543
544
branch = Branch.initialize("original")
544
smart_add_branch(branch, ["original"], True, add_reporter_null)
545
branch.working_tree().commit("start branch.", verbose=False)
545
tree = WorkingTree('original', branch)
546
smart_add_tree(tree, ["original"], True, add_reporter_null)
547
tree.commit("start branch.", verbose=False)
546
548
# Mary branches it.
547
549
self.build_tree(("mary/",))
548
550
copy_branch(branch, "mary")
574
576
a = Branch.initialize('a')
575
577
file('a/file', 'wb').write('contents\n')
578
a.working_tree().add('file')
577
579
a.working_tree().commit('base revision', allow_pointless=False)
578
580
b = copy_branch(a, 'b')
579
581
file('a/file', 'wb').write('other contents\n')
604
606
a = Branch.initialize('a')
605
607
file('a/a_file', 'wb').write('contents\n')
608
a.working_tree().add('a_file')
607
609
a.working_tree().commit('a_revision', allow_pointless=False)
609
611
b = Branch.initialize('b')
610
612
file('b/b_file', 'wb').write('contents\n')
613
b.working_tree().add('b_file')
612
614
b.working_tree().commit('b_revision', allow_pointless=False)
613
615
merge(['b', -1], ['b', 0], this_dir='a')
614
616
self.assert_(os.path.lexists('a/b_file'))
621
623
a = Branch.initialize('a')
622
624
file('a/file', 'wb').write('contents\n')
625
a.working_tree().add('file')
624
626
a.working_tree().commit('a_revision', allow_pointless=False)
626
628
b = Branch.initialize('b')
627
629
file('b/file', 'wb').write('contents\n')
630
b.working_tree().add('file')
629
631
b.working_tree().commit('b_revision', allow_pointless=False)
630
632
merge(['b', -1], ['b', 0], this_dir='a')
631
633
self.assert_(os.path.lexists('a/file'))
632
634
self.assert_(os.path.lexists('a/file.moved'))
633
635
self.assertEqual(a.working_tree().pending_merges(), [b.last_revision()])
637
def test_merge_deleted_conflicts(self):
639
a = Branch.initialize('a')
640
file('a/file', 'wb').write('contents\n')
641
a.working_tree().add('file')
642
a.working_tree().commit('a_revision', allow_pointless=False)
644
self.run_bzr('branch', 'a', 'b')
647
a.working_tree().commit('removed file', allow_pointless=False)
648
file('b/file', 'wb').write('changed contents\n')
650
b.working_tree().commit('changed file', allow_pointless=False)
651
merge(['a', -1], ['a', 1], this_dir='b')
652
self.failIf(os.path.lexists('b/file'))
635
654
def test_merge_metadata_vs_deletion(self):
636
655
"""Conflict deletion vs metadata change"""
638
657
a = Branch.initialize('a')
639
658
file('a/file', 'wb').write('contents\n')
641
659
a_wt = a.working_tree()
642
661
a_wt.commit('r0')
643
662
copy_branch(a, 'b')
644
663
b = Branch.open('b')