From a9f11b3cb281270084526a490dc61625b51b8192 Mon Sep 17 00:00:00 2001 From: Shawn Pearce Date: Wed, 2 Jan 2013 15:40:48 -0800 Subject: [PATCH] Support resolving relative fetch URLs on persistent-https:// Some versions of Python will only attempt to resolve a relative URL if they understand the URL scheme. Convert persistent-http:// and persistent-https:// schemes to the more typical http:// and https:// versions for the resolve call. Change-Id: I99072d5a69be8cfaa429a3ab177ba644d928ffba --- manifest_xml.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/manifest_xml.py b/manifest_xml.py index 36f8ef87..0664eff9 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -65,12 +65,19 @@ class _XmlRemote(object): def _resolveFetchUrl(self): url = self.fetchUrl.rstrip('/') manifestUrl = self.manifestUrl.rstrip('/') + p = manifestUrl.startswith('persistent-http') + if p: + manifestUrl = manifestUrl[len('persistent-'):] + # urljoin will get confused if there is no scheme in the base url # ie, if manifestUrl is of the form if manifestUrl.find(':') != manifestUrl.find('/') - 1: manifestUrl = 'gopher://' + manifestUrl url = urlparse.urljoin(manifestUrl, url) - return re.sub(r'^gopher://', '', url) + url = re.sub(r'^gopher://', '', url) + if p: + url = 'persistent-' + url + return url def ToRemoteSpec(self, projectName): url = self.resolvedFetchUrl.rstrip('/') + '/' + projectName