340
346
self.addCleanup(lambda: directories.remove('foo:'))
341
347
self.run_bzr('pull foo:bar -d target')
342
348
self.assertEqual(source_last, target.last_revision())
350
def test_pull_verbose_defaults_to_long(self):
351
tree = self.example_branch('source')
352
target = self.make_branch_and_tree('target')
353
out = self.run_bzr('pull -v source -d target')[0]
354
self.assertContainsRe(out,
355
r'revno: 1\ncommitter: .*\nbranch nick: source')
356
self.assertNotContainsRe(out, r'\n {4}1 .*\n {6}setup\n')
358
def test_pull_verbose_uses_default_log(self):
359
tree = self.example_branch('source')
360
target = self.make_branch_and_tree('target')
361
target_config = target.branch.get_config()
362
target_config.set_user_option('log_format', 'short')
363
out = self.run_bzr('pull -v source -d target')[0]
364
self.assertContainsRe(out, r'\n {4}1 .*\n {6}setup\n')
365
self.assertNotContainsRe(
366
out, r'revno: 1\ncommitter: .*\nbranch nick: source')
368
def test_pull_smart_stacked_streaming_acceptance(self):
369
"""'bzr pull -r 123' works on stacked, smart branches, even when the
370
revision specified by the revno is only present in the fallback
373
See <https://launchpad.net/bugs/380314>
375
self.setup_smart_server_with_call_log()
376
# Make a stacked-on branch with two commits so that the
377
# revision-history can't be determined just by looking at the parent
378
# field in the revision in the stacked repo.
379
parent = self.make_branch_and_tree('parent', format='1.9')
380
parent.commit(message='first commit')
381
parent.commit(message='second commit')
382
local = parent.bzrdir.sprout('local').open_workingtree()
383
local.commit(message='local commit')
384
local.branch.create_clone_on_transport(
385
self.get_transport('stacked'), stacked_on=self.get_url('parent'))
386
empty = self.make_branch_and_tree('empty', format='1.9')
387
self.reset_smart_call_log()
388
self.run_bzr(['pull', '-r', '1', self.get_url('stacked')],
390
# This figure represent the amount of work to perform this use case. It
391
# is entirely ok to reduce this number if a test fails due to rpc_count
392
# being too low. If rpc_count increases, more network roundtrips have
393
# become necessary for this use case. Please do not adjust this number
394
# upwards without agreement from bzr's network support maintainers.
395
self.assertLength(18, self.hpss_calls)
396
remote = Branch.open('stacked')
397
self.assertEndsWith(remote.get_stacked_on_url(), '/parent')
399
def test_pull_cross_format_warning(self):
400
"""You get a warning for probably slow cross-format pulls.
402
# this is assumed to be going through InterDifferingSerializer
403
from_tree = self.make_branch_and_tree('from', format='2a')
404
to_tree = self.make_branch_and_tree('to', format='1.14-rich-root')
405
from_tree.commit(message='first commit')
406
out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
407
self.assertContainsRe(err,
408
"(?m)Doing on-the-fly conversion")
410
def test_pull_cross_format_warning_no_IDS(self):
411
"""You get a warning for probably slow cross-format pulls.
413
# this simulates what would happen across the network, where
414
# interdifferingserializer is not active
416
debug.debug_flags.add('IDS_never')
417
# TestCase take care of restoring them
419
from_tree = self.make_branch_and_tree('from', format='2a')
420
to_tree = self.make_branch_and_tree('to', format='1.14-rich-root')
421
from_tree.commit(message='first commit')
422
out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
423
self.assertContainsRe(err,
424
"(?m)Doing on-the-fly conversion")
426
def test_pull_cross_format_from_network(self):
427
self.setup_smart_server_with_call_log()
428
from_tree = self.make_branch_and_tree('from', format='2a')
429
to_tree = self.make_branch_and_tree('to', format='1.14-rich-root')
430
self.assertIsInstance(from_tree.branch, remote.RemoteBranch)
431
from_tree.commit(message='first commit')
432
out, err = self.run_bzr(['pull', '-d', 'to',
433
from_tree.branch.bzrdir.root_transport.base])
434
self.assertContainsRe(err,
435
"(?m)Doing on-the-fly conversion")