summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--git_config.py5
-rw-r--r--manifest_xml.py18
2 files changed, 14 insertions, 9 deletions
diff --git a/git_config.py b/git_config.py
index f6093a25..af09ebae 100644
--- a/git_config.py
+++ b/git_config.py
@@ -576,7 +576,7 @@ class Remote(object):
576 return None 576 return None
577 577
578 u = self.review 578 u = self.review
579 if not u.startswith('http:') and not u.startswith('https:'): 579 if u.split(':')[0] not in ('http', 'https', 'sso'):
580 u = 'http://%s' % u 580 u = 'http://%s' % u
581 if u.endswith('/Gerrit'): 581 if u.endswith('/Gerrit'):
582 u = u[:len(u) - len('/Gerrit')] 582 u = u[:len(u) - len('/Gerrit')]
@@ -592,6 +592,9 @@ class Remote(object):
592 host, port = os.environ['REPO_HOST_PORT_INFO'].split() 592 host, port = os.environ['REPO_HOST_PORT_INFO'].split()
593 self._review_url = self._SshReviewUrl(userEmail, host, port) 593 self._review_url = self._SshReviewUrl(userEmail, host, port)
594 REVIEW_CACHE[u] = self._review_url 594 REVIEW_CACHE[u] = self._review_url
595 elif u.startswith('sso:'):
596 self._review_url = u # Assume it's right
597 REVIEW_CACHE[u] = self._review_url
595 else: 598 else:
596 try: 599 try:
597 info_url = u + 'ssh_info' 600 info_url = u + 'ssh_info'
diff --git a/manifest_xml.py b/manifest_xml.py
index f2ac77a5..d496337c 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -80,18 +80,20 @@ class _XmlRemote(object):
80 def _resolveFetchUrl(self): 80 def _resolveFetchUrl(self):
81 url = self.fetchUrl.rstrip('/') 81 url = self.fetchUrl.rstrip('/')
82 manifestUrl = self.manifestUrl.rstrip('/') 82 manifestUrl = self.manifestUrl.rstrip('/')
83 p = manifestUrl.startswith('persistent-http') 83 # urljoin will gets confused over quite a few things. The ones we care
84 if p: 84 # about here are:
85 manifestUrl = manifestUrl[len('persistent-'):] 85 # * no scheme in the base url, like <hostname:port>
86 86 # * persistent-https://
87 # urljoin will get confused if there is no scheme in the base url 87 # We handle this by replacing these with obscure protocols
88 # ie, if manifestUrl is of the form <hostname:port> 88 # and then replacing them with the original when we are done.
89 # gopher -> <none>
90 # wais -> persistent-https
89 if manifestUrl.find(':') != manifestUrl.find('/') - 1: 91 if manifestUrl.find(':') != manifestUrl.find('/') - 1:
90 manifestUrl = 'gopher://' + manifestUrl 92 manifestUrl = 'gopher://' + manifestUrl
93 manifestUrl = re.sub(r'^persistent-https://', 'wais://', manifestUrl)
91 url = urllib.parse.urljoin(manifestUrl, url) 94 url = urllib.parse.urljoin(manifestUrl, url)
92 url = re.sub(r'^gopher://', '', url) 95 url = re.sub(r'^gopher://', '', url)
93 if p: 96 url = re.sub(r'^wais://', 'persistent-https://', url)
94 url = 'persistent-' + url
95 return url 97 return url
96 98
97 def ToRemoteSpec(self, projectName): 99 def ToRemoteSpec(self, projectName):