62
63
file('hello', 'wt').write('quuux')
63
64
# We can't merge when there are in-tree changes
64
65
self.runbzr('merge ../b', retcode=3)
65
self.runbzr(['commit', '-m', "Like an epidemic of u's"])
66
a = WorkingTree.open('.')
67
a_tip = a.commit("Like an epidemic of u's")
66
68
self.runbzr('merge ../b -r last:1..last:1 --merge-type blooof',
68
70
self.runbzr('merge ../b -r last:1..last:1 --merge-type merge3')
74
76
self.runbzr('merge ../b -r last:1')
75
77
self.check_file_contents('goodbye', 'quux')
76
78
# Merging a branch pulls its revision into the tree
77
a = WorkingTree.open('.')
78
79
b = Branch.open('../b')
79
a.branch.repository.get_revision_xml(b.last_revision())
80
self.log('pending merges: %s', a.pending_merges())
81
self.assertEquals(a.pending_merges(),
83
self.runbzr('commit -m merged')
80
b_tip = b.last_revision()
81
self.failUnless(a.branch.repository.has_revision(b_tip))
82
self.assertEqual([a_tip, b_tip], a.get_parent_ids())
83
self.runbzr('revert --no-backup')
84
out, err = self.runbzr('merge -r revno:1:./hello', retcode=3)
85
self.assertTrue("Not a branch" in err)
86
self.runbzr('merge -r revno:%d:./..revno:%d:../b'
87
%(ancestor,b.revno()))
88
self.assertEquals(a.get_parent_ids(),
89
[a.branch.last_revision(), b.last_revision()])
90
self.check_file_contents('goodbye', 'quux')
91
self.runbzr('revert --no-backup')
92
self.runbzr('merge -r revno:%d:../b'%b.revno())
93
self.assertEquals(a.get_parent_ids(),
94
[a.branch.last_revision(), b.last_revision()])
95
a_tip = a.commit('merged')
84
96
self.runbzr('merge ../b -r last:1')
85
self.assertEqual(a.pending_merges(), [])
97
self.assertEqual([a_tip], a.get_parent_ids())
87
99
def test_merge_with_missing_file(self):
88
100
"""Merge handles missing file conflicts"""
195
207
file('../bundle', 'wb').write(self.runbzr('bundle ../branch_a')[0])
196
208
os.chdir('../branch_a')
197
209
self.runbzr('merge ../bundle', retcode=1)
198
testament_a = Testament.from_revision(tree_a.branch.repository,
199
tree_b.last_revision())
210
testament_a = Testament.from_revision(tree_a.branch.repository,
211
tree_b.get_parent_ids()[0])
200
212
testament_b = Testament.from_revision(tree_b.branch.repository,
201
tree_b.last_revision())
213
tree_b.get_parent_ids()[0])
202
214
self.assertEqualDiff(testament_a.as_text(),
203
215
testament_b.as_text())
204
216
tree_a.set_conflicts(ConflictList())