At http://people.ubuntu.com/~robertc/baz2.0/RemoteRepository._format
------------------------------------------------------------ revno: 4055 revision-id: [email protected] parent: [email protected] committer: Robert Collins <[email protected]> branch nick: RemoteRepository._format timestamp: Thu 2009-02-26 17:01:21 +1100 message: Actually make this branch work. === modified file 'bzrlib/remote.py' --- a/bzrlib/remote.py 2009-02-26 04:25:00 +0000 +++ b/bzrlib/remote.py 2009-02-26 06:01:21 +0000 @@ -243,6 +243,9 @@ def _open_repo_v3(self, path): verb = 'BzrDir.find_repositoryV3' + medium = self._client._medium + if medium._is_remote_before((1, 13)): + raise errors.UnknownSmartMethod(verb) response = self._call(verb, path) if response[0] != 'ok': raise errors.UnexpectedSmartServerResponse(response) @@ -780,8 +783,11 @@ :param repository: The repository to fallback to for non-hpss implemented operations. """ - if self._real_repository is not None: - raise AssertionError('_real_repository is already set') + # There was an assertion that this real repository was never replaced; + # However for down level serves we always open the real repository, + # which means that opening the branch ends up replacing it. Rather than + # write to real_branch.repository, we just allow the _real_repository + # object to be replaced. if isinstance(repository, RemoteRepository): raise AssertionError() self._real_repository = repository === modified file 'bzrlib/smart/bzrdir.py' --- a/bzrlib/smart/bzrdir.py 2009-02-26 04:25:00 +0000 +++ b/bzrlib/smart/bzrdir.py 2009-02-26 06:01:21 +0000 @@ -156,9 +156,10 @@ This operates precisely like 'bzrdir.find_repository'. - :return: (relpath, rich_root, tree_ref, external_lookup) flags. All are - strings, relpath is a / prefixed path, and the other three are - either 'yes' or 'no'. + :return: (relpath, rich_root, tree_ref, external_lookup, network_name). + All are strings, relpath is a / prefixed path, the next three are + either 'yes' or 'no', and the last is a repository format network + name. :raises errors.NoRepositoryPresent: When there is no repository present. """ @@ -168,7 +169,8 @@ path = self._repo_relpath(bzrdir.root_transport, repository) rich_root, tree_ref, external_lookup = self._format_to_capabilities( repository._format) - return path, rich_root, tree_ref, external_lookup + network_name = repository._format.network_name() + return path, rich_root, tree_ref, external_lookup, network_name class SmartServerRequestFindRepositoryV1(SmartServerRequestFindRepository): @@ -188,7 +190,7 @@ :return: norepository or ok, relpath. """ try: - path, rich_root, tree_ref, external_lookup = self._find(path) + path, rich_root, tree_ref, external_lookup, name = self._find(path) return SuccessfulSmartServerResponse(('ok', path, rich_root, tree_ref)) except errors.NoRepositoryPresent: return FailedSmartServerResponse(('norepository', )) @@ -212,7 +214,7 @@ external_lookup. """ try: - path, rich_root, tree_ref, external_lookup = self._find(path) + path, rich_root, tree_ref, external_lookup, name = self._find(path) return SuccessfulSmartServerResponse( ('ok', path, rich_root, tree_ref, external_lookup)) except errors.NoRepositoryPresent: @@ -236,9 +238,9 @@ external_lookup, network_name. """ try: - path, rich_root, tree_ref, external_lookup = self._find(path) + path, rich_root, tree_ref, external_lookup, name = self._find(path) return SuccessfulSmartServerResponse( - ('ok', path, rich_root, tree_ref, external_lookup)) + ('ok', path, rich_root, tree_ref, external_lookup, name)) except errors.NoRepositoryPresent: return FailedSmartServerResponse(('norepository', )) === modified file 'bzrlib/tests/test_remote.py' --- a/bzrlib/tests/test_remote.py 2009-02-26 04:25:00 +0000 +++ b/bzrlib/tests/test_remote.py 2009-02-26 06:01:21 +0000 @@ -262,6 +262,10 @@ class TestRemote(tests.TestCaseWithMemoryTransport): + def get_repo_format(self): + reference_bzrdir_format = bzrdir.format_registry.get('default')() + return reference_bzrdir_format.repository_format + def disable_verb(self, verb): """Disable a verb for one test.""" request_handlers = smart.request.request_handlers @@ -345,9 +349,11 @@ AssertionError, client_medium._remember_remote_is_before, (1, 9)) -class TestBzrDirOpenBranch(tests.TestCase): +class TestBzrDirOpenBranch(TestRemote): def test_branch_present(self): + reference_format = self.get_repo_format() + network_name = reference_format.network_name() transport = MemoryTransport() transport.mkdir('quack') transport = transport.clone('quack') @@ -356,8 +362,8 @@ 'BzrDir.open_branch', ('quack/',), 'success', ('ok', '')) client.add_expected_call( - 'BzrDir.find_repositoryV2', ('quack/',), - 'success', ('ok', '', 'no', 'no', 'no')) + 'BzrDir.find_repositoryV3', ('quack/',), + 'success', ('ok', '', 'no', 'no', 'no', network_name)) client.add_expected_call( 'Branch.get_stacked_on_url', ('quack/',), 'error', ('NotStacked',)) @@ -404,12 +410,14 @@ # transmitted as "~", not "%7E". transport = RemoteTCPTransport('bzr://localhost/~hello/') client = FakeClient(transport.base) + reference_format = self.get_repo_format() + network_name = reference_format.network_name() client.add_expected_call( 'BzrDir.open_branch', ('~hello/',), 'success', ('ok', '')) client.add_expected_call( - 'BzrDir.find_repositoryV2', ('~hello/',), - 'success', ('ok', '', 'no', 'no', 'no')) + 'BzrDir.find_repositoryV3', ('~hello/',), + 'success', ('ok', '', 'no', 'no', 'no', network_name)) client.add_expected_call( 'Branch.get_stacked_on_url', ('~hello/',), 'error', ('NotStacked',)) @@ -419,6 +427,8 @@ client.finished_test() def check_open_repository(self, rich_root, subtrees, external_lookup='no'): + reference_format = self.get_repo_format() + network_name = reference_format.network_name() transport = MemoryTransport() transport.mkdir('quack') transport = transport.clone('quack') @@ -432,12 +442,13 @@ subtree_response = 'no' client = FakeClient(transport.base) client.add_success_response( - 'ok', '', rich_response, subtree_response, external_lookup) + 'ok', '', rich_response, subtree_response, external_lookup, + network_name) bzrdir = RemoteBzrDir(transport, remote.RemoteBzrDirFormat(), _client=client) result = bzrdir.open_repository() self.assertEqual( - [('call', 'BzrDir.find_repositoryV2', ('quack/',))], + [('call', 'BzrDir.find_repositoryV3', ('quack/',))], client._calls) self.assertIsInstance(result, RemoteRepository) self.assertEqual(bzrdir, result.bzrdir) @@ -534,10 +545,6 @@ class TestBzrDirOpenRepository(TestRemote): - def get_repo_format(self): - reference_bzrdir_format = bzrdir.format_registry.get('default')() - return reference_bzrdir_format.repository_format - def test_backwards_compat_1_2_3(self): # fallback all the way to the first version. reference_format = self.get_repo_format() @@ -699,7 +706,7 @@ self.assertEqual((2, revid), result) -class TestBranch_get_stacked_on_url(tests.TestCaseWithMemoryTransport): +class TestBranch_get_stacked_on_url(TestRemote): """Test Branch._get_stacked_on_url rpc""" def test_get_stacked_on_invalid_url(self): @@ -739,8 +746,9 @@ 'BzrDir.open_branch', ('stacked/',), 'success', ('ok', '')) client.add_expected_call( - 'BzrDir.find_repositoryV2', ('stacked/',), - 'success', ('ok', '', 'no', 'no', 'no')) + 'BzrDir.find_repositoryV3', ('stacked/',), + 'success', ('ok', '', 'no', 'no', 'no', + stacked_branch.repository._format.network_name())) # called twice, once from constructor and then again by us client.add_expected_call( 'Branch.get_stacked_on_url', ('stacked/',), @@ -766,13 +774,15 @@ base_branch = self.make_branch('base', format='1.6') stacked_branch = self.make_branch('stacked', format='1.6') stacked_branch.set_stacked_on_url('../base') + reference_format = self.get_repo_format() + network_name = reference_format.network_name() client = FakeClient(self.get_url()) client.add_expected_call( 'BzrDir.open_branch', ('stacked/',), 'success', ('ok', '')) client.add_expected_call( - 'BzrDir.find_repositoryV2', ('stacked/',), - 'success', ('ok', '', 'no', 'no', 'no')) + 'BzrDir.find_repositoryV3', ('stacked/',), + 'success', ('ok', '', 'no', 'no', 'no', network_name)) # called twice, once from constructor and then again by us client.add_expected_call( 'Branch.get_stacked_on_url', ('stacked/',), -- bazaar-commits mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/bazaar-commits
