[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