mirror of
https://gerrit.googlesource.com/git-repo
synced 2025-01-02 16:14:25 +00:00
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.
This commit is contained in:
parent
b660539c4a
commit
ceea368e88
@ -46,16 +46,20 @@ class _XmlRemote(object):
|
|||||||
self.fetchUrl = fetch
|
self.fetchUrl = fetch
|
||||||
self.manifestUrl = manifestUrl
|
self.manifestUrl = manifestUrl
|
||||||
self.reviewUrl = review
|
self.reviewUrl = review
|
||||||
|
self.resolvedFetchUrl = self._resolveFetchUrl()
|
||||||
|
|
||||||
def ToRemoteSpec(self, projectName):
|
def _resolveFetchUrl(self):
|
||||||
url = self.fetchUrl.rstrip('/') + '/' + projectName + '.git'
|
url = self.fetchUrl.rstrip('/')
|
||||||
manifestUrl = self.manifestUrl.rstrip('/')
|
manifestUrl = self.manifestUrl.rstrip('/')
|
||||||
# urljoin will get confused if there is no scheme in the base url
|
# urljoin will get confused if there is no scheme in the base url
|
||||||
# ie, if manifestUrl is of the form <hostname:port>
|
# ie, if manifestUrl is of the form <hostname:port>
|
||||||
if manifestUrl.find(':') != manifestUrl.find('/') - 1:
|
if manifestUrl.find(':') != manifestUrl.find('/') - 1:
|
||||||
manifestUrl = 'gopher://' + manifestUrl
|
manifestUrl = 'gopher://' + manifestUrl
|
||||||
url = urlparse.urljoin(manifestUrl, url)
|
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)
|
return RemoteSpec(self.name, url, self.reviewUrl)
|
||||||
|
|
||||||
class XmlManifest(object):
|
class XmlManifest(object):
|
||||||
@ -368,7 +372,7 @@ class XmlManifest(object):
|
|||||||
raise ManifestParseError, 'refusing to mirror %s' % m_url
|
raise ManifestParseError, 'refusing to mirror %s' % m_url
|
||||||
|
|
||||||
if self._default and self._default.remote:
|
if self._default and self._default.remote:
|
||||||
url = self._default.remote.fetchUrl
|
url = self._default.remote.resolvedFetchUrl
|
||||||
if not url.endswith('/'):
|
if not url.endswith('/'):
|
||||||
url += '/'
|
url += '/'
|
||||||
if m_url.startswith(url):
|
if m_url.startswith(url):
|
||||||
|
Loading…
Reference in New Issue
Block a user