Rev 3057: Preserve repository format when branching from a smart server in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Fri Nov 30 07:31:04 GMT 2007
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 3057
revision-id:pqm at pqm.ubuntu.com-20071130073050-wqh13t7fars5qbhl
parent: pqm at pqm.ubuntu.com-20071130070051-vl4e257ac6vxgo72
parent: andrew.bennetts at canonical.com-20071130060632-jh8ii23pcpnzqq5p
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2007-11-30 07:30:50 +0000
message:
Preserve repository format when branching from a smart server
(#164626, Andrew Bennetts)
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
------------------------------------------------------------
revno: 3047.1.5
revision-id:andrew.bennetts at canonical.com-20071130060632-jh8ii23pcpnzqq5p
parent: andrew.bennetts at canonical.com-20071130060454-dtbvokyugnztgsnq
committer: Andrew Bennetts <andrew.bennetts at canonical.com>
branch nick: preserve-format-from-hpss
timestamp: Fri 2007-11-30 17:06:32 +1100
message:
Add NEWS entry.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 3047.1.4
revision-id:andrew.bennetts at canonical.com-20071130060454-dtbvokyugnztgsnq
parent: andrew.bennetts at canonical.com-20071130054200-tp1k3vfbczd78cjo
committer: Andrew Bennetts <andrew.bennetts at canonical.com>
branch nick: preserve-format-from-hpss
timestamp: Fri 2007-11-30 17:04:54 +1100
message:
Simplify RemoteRepository.sprout thanks to review comments.
modified:
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
------------------------------------------------------------
revno: 3047.1.3
revision-id:andrew.bennetts at canonical.com-20071130054200-tp1k3vfbczd78cjo
parent: andrew.bennetts at canonical.com-20071130022851-yopp2a7jxb3ts0sa
parent: pqm at pqm.ubuntu.com-20071129184101-u9506rihe4zbzyyz
committer: Andrew Bennetts <andrew.bennetts at canonical.com>
branch nick: preserve-format-from-hpss
timestamp: Fri 2007-11-30 16:42:00 +1100
message:
Merge from bzr.dev.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/inventory.py inventory.py-20050309040759-6648b84ca2005b37
bzrlib/mail_client.py mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
bzrlib/reconfigure.py reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_reconfigure.py test_reconfigure.py-20070908173426-khfo5fi2rgzgtwj3-1
bzrlib/tests/blackbox/test_remove.py test_remove.py-20060530011439-fika5rm84lon0goe-1
bzrlib/tests/blackbox/test_send.py test_bundle.py-20060616222707-c21c8b7ea5ef57b1
bzrlib/tests/branch_implementations/test_create_checkout.py test_create_checkout-20070322193723-n2wkp1g03r0404di-1
bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
bzrlib/tests/test_bzrdir.py test_bzrdir.py-20060131065654-deba40eef51cf220
bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
bzrlib/tests/workingtree_implementations/test_remove.py test_remove.py-20070413183901-rvnp85rtc0q0sclp-1
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
------------------------------------------------------------
revno: 3047.1.2
revision-id:andrew.bennetts at canonical.com-20071130022851-yopp2a7jxb3ts0sa
parent: andrew.bennetts at canonical.com-20071130015900-vlllu9ovlyrudt7d
committer: Andrew Bennetts <andrew.bennetts at canonical.com>
branch nick: preserve-format-from-hpss
timestamp: Fri 2007-11-30 13:28:51 +1100
message:
Directly test that sprouting branches from a HPSS preserves the repository format.
modified:
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
------------------------------------------------------------
revno: 3047.1.1
revision-id:andrew.bennetts at canonical.com-20071130015900-vlllu9ovlyrudt7d
parent: pqm at pqm.ubuntu.com-20071129010913-07e4l7k5x9gfnmoh
committer: Andrew Bennetts <andrew.bennetts at canonical.com>
branch nick: preserve-format-from-hpss
timestamp: Fri 2007-11-30 12:59:00 +1100
message:
Fix for bug 164626, add test that Repository.sprout preserves format.
modified:
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
=== modified file 'NEWS'
--- a/NEWS 2007-11-30 03:49:39 +0000
+++ b/NEWS 2007-11-30 07:30:50 +0000
@@ -103,6 +103,9 @@
* A progress bar has been added for knitpack -> knitpack fetching.
(Robert Collins, #157789, #159147)
+ * Branching from a branch via smart server now preserves the repository
+ format. (Andrew Bennetts, #164626)
+
* ``commit`` is now able to invoke an external editor in a non-ascii
directory. (Daniel Watkins, #84043)
=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py 2007-11-29 18:41:01 +0000
+++ b/bzrlib/remote.py 2007-11-30 06:04:54 +0000
@@ -595,7 +595,9 @@
def sprout(self, to_bzrdir, revision_id=None):
# TODO: Option to control what format is created?
- dest_repo = to_bzrdir.create_repository()
+ self._ensure_real()
+ dest_repo = self._real_repository._format.initialize(to_bzrdir,
+ shared=False)
dest_repo.fetch(self, revision_id=revision_id)
return dest_repo
@@ -1232,7 +1234,8 @@
# format, because RemoteBranches can't be created at arbitrary URLs.
# XXX: if to_bzrdir is a RemoteBranch, this should perhaps do
# to_bzrdir.create_branch...
- result = branch.BranchFormat.get_default_format().initialize(to_bzrdir)
+ self._ensure_real()
+ result = self._real_branch._format.initialize(to_bzrdir)
self.copy_content_into(result, revision_id=revision_id)
result.set_parent(self.bzrdir.root_transport.base)
return result
=== modified file 'bzrlib/tests/repository_implementations/test_repository.py'
--- a/bzrlib/tests/repository_implementations/test_repository.py 2007-11-26 21:01:29 +0000
+++ b/bzrlib/tests/repository_implementations/test_repository.py 2007-11-30 02:28:51 +0000
@@ -28,8 +28,15 @@
)
from bzrlib.delta import TreeDelta
from bzrlib.inventory import Inventory, InventoryDirectory
+from bzrlib.repofmt.weaverepo import (
+ RepositoryFormat5,
+ RepositoryFormat6,
+ RepositoryFormat7,
+ )
from bzrlib.revision import NULL_REVISION, Revision
+from bzrlib.smart import server
from bzrlib.tests import (
+ KnownFailure,
TestCaseWithTransport,
TestNotApplicable,
TestSkipped,
@@ -573,6 +580,56 @@
self.assertEqual(revision, repo2.get_revision('A'))
self.assertEqual(signature, repo2.get_signature_text('A'))
+ # XXX: this helper duplicated from tests.test_repository
+ def make_remote_repository(self, path):
+ """Make a RemoteRepository object backed by a real repository that will
+ be created at the given path."""
+ repo = self.make_repository(path)
+ smart_server = server.SmartTCPServer_for_testing()
+ smart_server.setUp(self.get_server())
+ remote_transport = get_transport(smart_server.get_url()).clone(path)
+ self.addCleanup(smart_server.tearDown)
+ remote_bzrdir = bzrdir.BzrDir.open_from_transport(remote_transport)
+ remote_repo = remote_bzrdir.open_repository()
+ return remote_repo
+
+ def test_sprout_from_hpss_preserves_format(self):
+ """repo.sprout from a smart server preserves the repository format."""
+ if self.repository_format == RepositoryFormat7():
+ raise KnownFailure(
+ "Cannot fetch weaves over smart protocol.")
+ remote_repo = self.make_remote_repository('remote')
+ local_bzrdir = self.make_bzrdir('local')
+ try:
+ local_repo = remote_repo.sprout(local_bzrdir)
+ except errors.TransportNotPossible:
+ raise TestNotApplicable(
+ "Cannot lock_read old formats like AllInOne over HPSS.")
+ remote_backing_repo = bzrdir.BzrDir.open(
+ self.get_vfs_only_url('remote')).open_repository()
+ self.assertEqual(remote_backing_repo._format, local_repo._format)
+
+ def test_sprout_branch_from_hpss_preserves_repo_format(self):
+ """branch.sprout from a smart server preserves the repository format.
+ """
+ weave_formats = [RepositoryFormat5(), RepositoryFormat6(),
+ RepositoryFormat7()]
+ if self.repository_format in weave_formats:
+ raise KnownFailure(
+ "Cannot fetch weaves over smart protocol.")
+ remote_repo = self.make_remote_repository('remote')
+ remote_branch = remote_repo.bzrdir.create_branch()
+ try:
+ local_bzrdir = remote_branch.bzrdir.sprout('local')
+ except errors.TransportNotPossible:
+ raise TestNotApplicable(
+ "Cannot lock_read old formats like AllInOne over HPSS.")
+ local_repo = local_bzrdir.open_repository()
+ remote_backing_repo = bzrdir.BzrDir.open(
+ self.get_vfs_only_url('remote')).open_repository()
+ self.assertEqual(remote_backing_repo._format, local_repo._format)
+
+
class TestRepositoryLocking(TestCaseWithRepository):
def test_leave_lock_in_place(self):
More information about the bazaar-commits
mailing list