344
344
self.run_bzr('merge -d target -r revid:rev2a branch_b')
345
345
self.failUnlessExists('target/file1')
346
346
self.failIfExists('target/file2')
348
def assertDirectoryContent(self, directory, entries, message=''):
349
"""Assert whether entries (files or directories) are exist
350
in some directory. It's also check that there is no extra
353
ondisk = sorted(os.listdir(directory))
354
if set(ondisk) == set(entries):
358
raise AssertionError(
359
'%s"%s" directory content is different:\na = %s\nb = %s\n'
360
% (message, directory, entries, ondisk))
362
def test_cherrypicking_merge(self):
364
source = self.make_branch_and_tree('source')
365
for f in ('a', 'b', 'c', 'd'):
366
self.build_tree(['source/'+f])
368
source.commit('added '+f, rev_id='rev_'+f)
370
target = source.bzrdir.sprout('target', 'rev_a').open_workingtree()
371
self.assertDirectoryContent('target', ['.bzr', 'a'])
373
self.run_bzr('merge -d target -r revid:rev_b..revid:rev_c source')
374
self.assertDirectoryContent('target', ['.bzr', 'a', 'c'])
377
self.run_bzr('merge -d target -r revid:rev_b..revid:rev_d source')
378
self.assertDirectoryContent('target', ['.bzr', 'a', 'c', 'd'])
380
# pick 1 revision with option --changes
381
self.run_bzr('merge -d target -c revid:rev_d source')
382
self.assertDirectoryContent('target', ['.bzr', 'a', 'd'])