14
14
from bzrlib import changeset
15
15
from bzrlib.merge_core import (ApplyMerge3, make_merge_changeset,
16
16
BackupBeforeChange, ExecFlagMerge, WeaveMerge)
17
from bzrlib.changeset import Inventory, apply_changeset, invert_dict
18
from bzrlib.changeset import get_contents, ReplaceContents
17
from bzrlib.changeset import Inventory, apply_changeset, invert_dict, \
18
get_contents, ReplaceContents, ChangeExecFlag
19
19
from bzrlib.clone import copy_branch
20
20
from bzrlib.merge import merge
626
626
self.assert_(os.path.lexists('a/file'))
627
627
self.assert_(os.path.lexists('a/file.moved'))
628
628
self.assertEqual(a.working_tree().pending_merges(), [b.last_revision()])
630
def test_merge_deleted_conflicts(self):
632
a = Branch.initialize('a')
633
file('a/file', 'wb').write('contents\n')
635
a.working_tree().commit('a_revision', allow_pointless=False)
637
self.run_bzr('branch', 'a', 'b')
640
a.working_tree().commit('removed file', allow_pointless=False)
641
file('b/file', 'wb').write('changed contents\n')
643
b.working_tree().commit('changed file', allow_pointless=False)
644
merge(['a', -1], ['a', 1], this_dir='b')
645
self.failIf(os.path.lexists('b/file'))
647
def test_merge_metadata_vs_deletion(self):
648
"""Conflict deletion vs metadata change"""
650
a = Branch.initialize('a')
651
file('a/file', 'wb').write('contents\n')
653
a_wt = a.working_tree()
657
b_wt = b.working_tree()
658
os.chmod('b/file', 0755)
660
a_wt.commit('removed a')
661
self.assertEqual(a.revno(), 2)
662
self.assertFalse(os.path.exists('a/file'))
663
b_wt.commit('exec a')
664
merge(['b', -1], ['b', 0], this_dir='a')
665
self.assert_(os.path.exists('a/file'))