Rev 6286: (gz) Avoid using URL specific join and split when seperating segment in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
Patch Queue Manager
pqm at pqm.ubuntu.com
Thu Nov 24 12:50:51 UTC 2011
At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 6286 [merge]
revision-id: pqm at pqm.ubuntu.com-20111124125050-ltmdzdw0jabk998p
parent: pqm at pqm.ubuntu.com-20111123141103-afx95vxa2t07ijy6
parent: martin.packman at canonical.com-20111124120650-d2ba5l16qydjdyvb
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2011-11-24 12:50:50 +0000
message:
(gz) Avoid using URL specific join and split when seperating segment
parameters (Martin Packman)
modified:
bzrlib/tests/test_urlutils.py test_urlutils.py-20060502192900-46b1f9579987cf9c
bzrlib/urlutils.py urlutils.py-20060502195429-e8a161ecf8fac004
doc/en/release-notes/bzr-2.5.txt bzr2.5.txt-20110708125756-587p0hpw7oke4h05-1
=== modified file 'bzrlib/tests/test_urlutils.py'
--- a/bzrlib/tests/test_urlutils.py 2011-09-04 23:18:43 +0000
+++ b/bzrlib/tests/test_urlutils.py 2011-11-18 15:31:48 +0000
@@ -501,6 +501,7 @@
def test_split_segment_parameters_raw(self):
split_segment_parameters_raw = urlutils.split_segment_parameters_raw
+ # Check relative references with absolute paths
self.assertEquals(("/some/path", []),
split_segment_parameters_raw("/some/path"))
self.assertEquals(("/some/path", ["tip"]),
@@ -511,19 +512,22 @@
split_segment_parameters_raw("/somedir/path,heads%2Ftip"))
self.assertEquals(("/somedir/path", ["heads%2Ftip", "bar"]),
split_segment_parameters_raw("/somedir/path,heads%2Ftip,bar"))
- self.assertEquals(("/", ["key1=val1"]),
+ # Check relative references with relative paths
+ self.assertEquals(("", ["key1=val1"]),
split_segment_parameters_raw(",key1=val1"))
self.assertEquals(("foo/", ["key1=val1"]),
split_segment_parameters_raw("foo/,key1=val1"))
- self.assertEquals(("/foo", ["key1=val1"]),
+ self.assertEquals(("foo", ["key1=val1"]),
split_segment_parameters_raw("foo,key1=val1"))
self.assertEquals(("foo/base,la=bla/other/elements", []),
split_segment_parameters_raw("foo/base,la=bla/other/elements"))
self.assertEquals(("foo/base,la=bla/other/elements", ["a=b"]),
split_segment_parameters_raw("foo/base,la=bla/other/elements,a=b"))
+ # TODO: Check full URLs as well as relative references
def test_split_segment_parameters(self):
split_segment_parameters = urlutils.split_segment_parameters
+ # Check relative references with absolute paths
self.assertEquals(("/some/path", {}),
split_segment_parameters("/some/path"))
self.assertEquals(("/some/path", {"branch": "tip"}),
@@ -538,7 +542,8 @@
"/somedir/path,ref=heads%2Ftip,key1=val1"))
self.assertEquals(("/somedir/path", {"ref": "heads%2F=tip"}),
split_segment_parameters("/somedir/path,ref=heads%2F=tip"))
- self.assertEquals(("/", {"key1": "val1"}),
+ # Check relative references with relative paths
+ self.assertEquals(("", {"key1": "val1"}),
split_segment_parameters(",key1=val1"))
self.assertEquals(("foo/", {"key1": "val1"}),
split_segment_parameters("foo/,key1=val1"))
@@ -547,6 +552,7 @@
self.assertEquals(("foo/base,key1=val1/other/elements",
{"key2": "val2"}), split_segment_parameters(
"foo/base,key1=val1/other/elements,key2=val2"))
+ # TODO: Check full URLs as well as relative references
def test_win32_strip_local_trailing_slash(self):
strip = urlutils._win32_strip_local_trailing_slash
=== modified file 'bzrlib/urlutils.py'
--- a/bzrlib/urlutils.py 2011-11-16 10:36:31 +0000
+++ b/bzrlib/urlutils.py 2011-11-21 09:59:54 +0000
@@ -441,11 +441,15 @@
:param url: A relative or absolute URL
:return: (url, subsegments)
"""
- (parent_url, child_dir) = split(url)
- subsegments = child_dir.split(",")
- if len(subsegments) == 1:
+ # GZ 2011-11-18: Dodgy removing the terminal slash like this, function
+ # operates on urls not url+segments, and Transport classes
+ # should not be blindly adding slashes in the first place.
+ lurl = strip_trailing_slash(url)
+ # Segments begin at first comma after last forward slash, if one exists
+ segment_start = lurl.find(",", lurl.rfind("/")+1)
+ if segment_start == -1:
return (url, [])
- return (join(parent_url, subsegments[0]), subsegments[1:])
+ return (lurl[:segment_start], lurl[segment_start+1:].split(","))
def split_segment_parameters(url):
=== modified file 'doc/en/release-notes/bzr-2.5.txt'
--- a/doc/en/release-notes/bzr-2.5.txt 2011-11-23 14:11:03 +0000
+++ b/doc/en/release-notes/bzr-2.5.txt 2011-11-24 12:06:50 +0000
@@ -50,6 +50,12 @@
* Resolve regression from colocated branch path handling, by ensuring that
unreserved characters are unquoted in URLs. (Martin Packman, #842223)
+* Split segments from URLs for colocated branches without assuming the
+ combined form is a valid. (Martin Packman, #842233)
+
+* Support looking up revision numbers by revision id in empty branches.
+ (Jelmer Vernooij, #535031)
+
* Support verifying signatures on remote repositories.
(Jelmer Vernooij, #889694)
More information about the bazaar-commits
mailing list