Rev 5319: (spiv) Fix BzrDir.sprout to respect default stacking policies (#597942) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Fri Jun 25 02:47:20 BST 2010
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 5319 [merge]
revision-id: pqm at pqm.ubuntu.com-20100625014717-87uomuhwxiuths2j
parent: pqm at pqm.ubuntu.com-20100624111149-o3crzmivr896yafb
parent: andrew.bennetts at canonical.com-20100624062940-51ycnvtomytvlnua
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2010-06-25 02:47:17 +0100
message:
(spiv) Fix BzrDir.sprout to respect default stacking policies (#597942)
(Andrew Bennetts)
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/tests/per_bzrdir/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
=== modified file 'NEWS'
--- a/NEWS 2010-06-23 08:14:21 +0000
+++ b/NEWS 2010-06-25 01:47:17 +0000
@@ -43,6 +43,10 @@
Bug Fixes
*********
+* ``bzr branch`` to a new repository with a default stacking policy no
+ longer transfers the full history unnecessarily.
+ (Andrew Bennetts, #597942)
+
* ``bzr init`` does not recursively scan directory contents anymore
leading to faster init for directories with existing content.
(Martin [gz], Parth Malwankar, #501307)
=== modified file 'bzrlib/bzrdir.py'
--- a/bzrlib/bzrdir.py 2010-05-25 17:27:52 +0000
+++ b/bzrlib/bzrdir.py 2010-06-24 06:29:40 +0000
@@ -1244,7 +1244,8 @@
repository_policy = result.determine_repository_policy(
force_new_repo, stacked_branch_url, require_stacking=stacked)
result_repo, is_new_repo = repository_policy.acquire_repository()
- if is_new_repo and revision_id is not None and not stacked:
+ is_stacked = stacked or (len(result_repo._fallback_repositories) != 0)
+ if is_new_repo and revision_id is not None and not is_stacked:
fetch_spec = graph.PendingAncestryResult(
[revision_id], source_repository)
else:
=== modified file 'bzrlib/tests/per_bzrdir/test_bzrdir.py'
--- a/bzrlib/tests/per_bzrdir/test_bzrdir.py 2010-05-20 18:23:17 +0000
+++ b/bzrlib/tests/per_bzrdir/test_bzrdir.py 2010-06-24 06:29:40 +0000
@@ -1168,6 +1168,29 @@
self.assertEqual(tree.branch.last_revision(),
target.open_branch().last_revision())
+ def test_sprout_with_revision_id_uses_default_stack_on(self):
+ # Make a branch with three commits to stack on.
+ builder = self.make_branch_builder('stack-on')
+ builder.start_series()
+ builder.build_commit(message='Rev 1.', rev_id='rev-1')
+ builder.build_commit(message='Rev 2.', rev_id='rev-2')
+ builder.build_commit(message='Rev 3.', rev_id='rev-3')
+ builder.finish_series()
+ stack_on = builder.get_branch()
+ # Make a bzrdir with a default stacking policy to stack on that branch.
+ config = self.make_bzrdir('policy-dir').get_config()
+ try:
+ config.set_default_stack_on(self.get_url('stack-on'))
+ except errors.BzrError:
+ raise TestNotApplicable('Only relevant for stackable formats.')
+ # Sprout the stacked-on branch into the bzrdir.
+ sprouted = stack_on.bzrdir.sprout(
+ self.get_url('policy-dir/sprouted'), revision_id='rev-3')
+ # Not all revisions are copied into the sprouted repository.
+ repo = sprouted.open_repository()
+ self.addCleanup(repo.lock_read().unlock)
+ self.assertEqual(None, repo.get_parent_map(['rev-1']).get('rev-1'))
+
def test_format_initialize_find_open(self):
# loopback test to check the current format initializes to itself.
if not self.bzrdir_format.is_supported():
More information about the bazaar-commits
mailing list