[MERGE] Re: Traceback using "bzr log lp:bzr-email"

Andrew Bennetts andrew at canonical.com
Tue Jan 22 00:56:34 GMT 2008


John Arbash Meinel wrote:
> Andrew Bennetts wrote:
>> John Arbash Meinel wrote:
>> [...]
>>> It might also be a different bug. Since it seems that
>>>
>>>   bzr log bzr+ssh://bazaar.launchpad.net/~bzr/bzr-email/trunk
>>>
>>> Is giving a "Not A Branch" error, whil
>>>
>>>   bzr log sftp://bazaar.launchpad.net/~bzr/bzr-email/trunk
>>>
>>> seems to work just fine.
>> As discussed elsewhere in the thread, the fix is to not URL-escape the 
>> relpaths
>> in the remote protocol.  Here's a bundle that does that.  It includes a 
>> bonus
>> test for how unicode paths are handled, which isn't directly relevant to 
>> this
>> bug but it seemed like a good idea to add a test for.
>> -Andrew.
>
> I think you attached the wrong patch. The one you have here is called 
> "smart-break-lock-bug.bundle" and has code that changes the default lock 
> timeout.

Oops, you're right.  Here's the right one.

-Andrew.

-------------- next part --------------
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: andrew.bennetts at canonical.com-20080122002742-\
#   jq55lz7umd0bcvx1
# target_branch: http://bazaar-vcs.org/bzr/bzr.dev
# testament_sha1: 2be2b8b233b3d2c8bea420b7e1153f197cfef0e5
# timestamp: 2008-01-22 11:28:52 +1100
# source_branch: http://people.ubuntu.com/~andrew/bzr/smart-path-\
#   encoding
# base_revision_id: pqm at pqm.ubuntu.com-20080118011625-465mgy0mhdz1jiky
# 
# Begin patch
=== modified file 'bzrlib/smart/client.py'
--- bzrlib/smart/client.py	2008-01-17 07:47:52 +0000
+++ bzrlib/smart/client.py	2008-01-22 00:27:42 +0000
@@ -91,4 +91,5 @@
         else:
             medium_base = urlutils.join(self._shared_connection.base, '/')
             
-        return urlutils.relative_url(medium_base, transport.base).encode('utf8')
+        rel_url = urlutils.relative_url(medium_base, transport.base)
+        return urlutils.unescape(rel_url).encode('utf8')

=== modified file 'bzrlib/tests/test_remote.py'
--- bzrlib/tests/test_remote.py	2008-01-17 07:47:52 +0000
+++ bzrlib/tests/test_remote.py	2008-01-22 00:27:42 +0000
@@ -26,7 +26,6 @@
 from cStringIO import StringIO
 
 from bzrlib import (
-    bzrdir,
     errors,
     graph,
     pack,
@@ -166,6 +165,19 @@
         self.base = base
 
 
+class TestVfsHas(tests.TestCase):
+
+    def test_unicode_path(self):
+        client = FakeClient([(('yes',), )], '/')
+        transport = RemoteTransport('bzr://localhost/', _client=client)
+        filename = u'/hell\u00d8'.encode('utf8')
+        result = transport.has(filename)
+        self.assertEqual(
+            [('call', 'has', (filename,))],
+            client._calls)
+        self.assertTrue(result)
+
+
 class TestBzrDirOpenBranch(tests.TestCase):
 
     def test_branch_present(self):
@@ -194,6 +206,19 @@
             [('call', 'BzrDir.open_branch', ('quack/',))],
             client._calls)
 
+    def test_url_quoting_of_path(self):
+        # Relpaths on the wire should not be URL-escaped.  So "~" should be
+        # transmitted as "~", not "%7E".
+        transport = RemoteTransport('bzr://localhost/~hello/')
+        client = FakeClient([(('ok', ''), ), (('ok', '', 'no', 'no'), )],
+                            transport.base)
+        bzrdir = RemoteBzrDir(transport, _client=client)
+        result = bzrdir.open_branch()
+        self.assertEqual(
+            [('call', 'BzrDir.open_branch', ('~hello/',)),
+             ('call', 'BzrDir.find_repository', ('~hello/',))],
+            client._calls)
+
     def check_open_repository(self, rich_root, subtrees):
         transport = MemoryTransport()
         transport.mkdir('quack')

# Begin bundle
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
X3pj0HhWf/F3JFOFCQEsRyTg


More information about the bazaar mailing list