Rev 5696: (spiv) Merge lp:bzr/2.3 into lp:bzr, in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Thu Mar 3 07:56:48 UTC 2011


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 5696 [merge]
revision-id: pqm at pqm.ubuntu.com-20110303075645-hncdmrbpczkxcvt4
parent: pqm at pqm.ubuntu.com-20110303060249-l2zou9i59742nrqf
parent: andrew.bennetts at canonical.com-20110303071612-ziphsj3vkk72b0a2
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2011-03-03 07:56:45 +0000
message:
  (spiv) Merge lp:bzr/2.3 into lp:bzr,
   including fix for #726584. (Andrew Bennetts)
modified:
  bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
  bzrlib/smart/bzrdir.py         bzrdir.py-20061122024551-ol0l0o0oofsu9b3t-1
  bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
  doc/en/release-notes/bzr-2.3.txt NEWS-20050323055033-4e00b5db738777ff
=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py	2011-03-03 06:02:49 +0000
+++ b/bzrlib/remote.py	2011-03-03 07:16:12 +0000
@@ -2151,14 +2151,14 @@
         repo_format = response_tuple_to_repo_format(response[3:])
         repo_path = response[2]
         if repository is not None:
-            remote_repo_url = urlutils.join(medium.base, repo_path)
+            remote_repo_url = urlutils.join(a_bzrdir.user_url, repo_path)
             url_diff = urlutils.relative_url(repository.user_url,
                     remote_repo_url)
             if url_diff != '.':
                 raise AssertionError(
                     'repository.user_url %r does not match URL from server '
                     'response (%r + %r)'
-                    % (repository.user_url, medium.base, repo_path))
+                    % (repository.user_url, a_bzrdir.user_url, repo_path))
             remote_repo = repository
         else:
             if repo_path == '':

=== modified file 'bzrlib/smart/bzrdir.py'
--- a/bzrlib/smart/bzrdir.py	2010-08-28 11:20:04 +0000
+++ b/bzrlib/smart/bzrdir.py	2011-02-28 23:07:53 +0000
@@ -181,7 +181,8 @@
 
         :param path: The path to the bzrdir.
         :param network_name: The network name of the branch type to create.
-        :return: (ok, network_name)
+        :return: ('ok', branch_format, repo_path, rich_root, tree_ref,
+            external_lookup, repo_format)
         """
         bzrdir = BzrDir.open_from_transport(
             self.transport_from_client_path(path))

=== modified file 'bzrlib/tests/test_remote.py'
--- a/bzrlib/tests/test_remote.py	2011-03-03 06:02:49 +0000
+++ b/bzrlib/tests/test_remote.py	2011-03-03 07:16:12 +0000
@@ -724,6 +724,34 @@
         format = branch._format
         self.assertEqual(network_name, format.network_name())
 
+    def test_already_open_repo_and_reused_medium(self):
+        """Bug 726584: create_branch(..., repository=repo) should work
+        regardless of what the smart medium's base URL is.
+        """
+        self.transport_server = test_server.SmartTCPServer_for_testing
+        transport = self.get_transport('.')
+        repo = self.make_repository('quack')
+        # Client's medium rooted a transport root (not at the bzrdir)
+        client = FakeClient(transport.base)
+        transport = transport.clone('quack')
+        reference_bzrdir_format = bzrdir.format_registry.get('default')()
+        reference_format = reference_bzrdir_format.get_branch_format()
+        network_name = reference_format.network_name()
+        reference_repo_fmt = reference_bzrdir_format.repository_format
+        reference_repo_name = reference_repo_fmt.network_name()
+        client.add_expected_call(
+            'BzrDir.create_branch', ('extra/quack/', network_name),
+            'success', ('ok', network_name, '', 'no', 'no', 'yes',
+            reference_repo_name))
+        a_bzrdir = RemoteBzrDir(transport, remote.RemoteBzrDirFormat(),
+            _client=client)
+        branch = a_bzrdir.create_branch(repository=repo)
+        # We should have got a remote branch
+        self.assertIsInstance(branch, remote.RemoteBranch)
+        # its format should have the settings from the response
+        format = branch._format
+        self.assertEqual(network_name, format.network_name())
+
 
 class TestBzrDirCreateRepository(TestRemote):
 

=== modified file 'doc/en/release-notes/bzr-2.3.txt'
--- a/doc/en/release-notes/bzr-2.3.txt	2011-02-22 13:51:26 +0000
+++ b/doc/en/release-notes/bzr-2.3.txt	2011-03-03 07:16:12 +0000
@@ -35,6 +35,10 @@
 * Correctly resolve text conflicts for files in subdirs.
   (Vincent Ladeuil, #715058)
 
+* Fix "AssertionError: repository.user_url ... does not match URL from
+  server response" when reusing a smart transport.
+  (Andrew Bennetts, #726584)
+
 * Restore proper logging of bytes transferred. We accidentally reset the
   counter when commands finished before we logged the total transferred.
   (John Arbash Meinel, #713258)




More information about the bazaar-commits mailing list