18
18
from StringIO import StringIO
20
from bzrlib import conflicts
21
25
from bzrlib.branch import Branch
22
26
from bzrlib.builtins import merge
23
27
from bzrlib.conflicts import ConflictList, TextConflict
24
28
from bzrlib.errors import UnrelatedBranches, NoCommits, BzrCommandError
25
29
from bzrlib.merge import transform_tree, merge_inner
26
from bzrlib.osutils import pathjoin
30
from bzrlib.osutils import pathjoin, file_kind
27
31
from bzrlib.revision import common_ancestor
28
32
from bzrlib.tests import TestCaseWithTransport
29
33
from bzrlib.trace import (enable_test_log, disable_test_log)
186
190
other_tree = tree_a.basis_tree()
187
191
os.unlink('tree_b/file')
188
192
merge_inner(tree_b.branch, other_tree, base_tree, this_tree=tree_b)
194
def test_merge_kind_change(self):
195
tree_a = self.make_branch_and_tree('tree_a')
196
self.build_tree_contents([('tree_a/file', 'content_1')])
197
tree_a.add('file', 'file-id')
198
tree_a.commit('added file')
199
tree_b = tree_a.bzrdir.sprout('tree_b').open_workingtree()
200
os.unlink('tree_a/file')
201
self.build_tree(['tree_a/file/'])
202
tree_a.commit('changed file to directory')
203
tree_b.merge_from_branch(tree_a.branch)
204
self.assertEqual('directory', file_kind('tree_b/file'))
206
self.assertEqual('file', file_kind('tree_b/file'))
207
self.build_tree_contents([('tree_b/file', 'content_2')])
208
tree_b.commit('content change')
209
tree_b.merge_from_branch(tree_a.branch)
210
self.assertEqual(tree_b.conflicts(),
211
[conflicts.ContentsConflict('file',
214
def test_merge_type_registry(self):
215
merge_type_option = option.Option.OPTIONS['merge-type']
216
self.assertFalse('merge4' in [x[0] for x in
217
merge_type_option.iter_switches()])
218
registry = _mod_merge.get_merge_type_registry()
219
registry.register_lazy('merge4', 'bzrlib.merge', 'Merge4Merger',
220
'time-travelling merge')
221
self.assertTrue('merge4' in [x[0] for x in
222
merge_type_option.iter_switches()])
223
registry.remove('merge4')
224
self.assertFalse('merge4' in [x[0] for x in
225
merge_type_option.iter_switches()])