From ceea368e887b1c1c600400f40564eca4f8b40192 Mon Sep 17 00:00:00 2001 From: Conley Owens Date: Thu, 20 Oct 2011 10:45:47 -0700 Subject: [PATCH] Correctly name projects when mirroring A bug introduced by relative urls caused projects such as manifest.git to be placed in the root directory instead of the directory they should by in. This fix creates and refers to a resolvedFetchUrl in the _XmlRemote class in order to get a fetchUrl that is never relative. --- manifest_xml.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/manifest_xml.py b/manifest_xml.py index 476472fb..02a5f9ae 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -46,16 +46,20 @@ class _XmlRemote(object): self.fetchUrl = fetch self.manifestUrl = manifestUrl self.reviewUrl = review + self.resolvedFetchUrl = self._resolveFetchUrl() - def ToRemoteSpec(self, projectName): - url = self.fetchUrl.rstrip('/') + '/' + projectName + '.git' + def _resolveFetchUrl(self): + url = self.fetchUrl.rstrip('/') manifestUrl = self.manifestUrl.rstrip('/') # 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) - url = re.sub(r'^gopher://', '', url) + return re.sub(r'^gopher://', '', url) + + def ToRemoteSpec(self, projectName): + url = self.resolvedFetchUrl + '/' + projectName return RemoteSpec(self.name, url, self.reviewUrl) class XmlManifest(object): @@ -368,7 +372,7 @@ class XmlManifest(object): raise ManifestParseError, 'refusing to mirror %s' % m_url if self._default and self._default.remote: - url = self._default.remote.fetchUrl + url = self._default.remote.resolvedFetchUrl if not url.endswith('/'): url += '/' if m_url.startswith(url):