diff options
| -rw-r--r-- | git_config.py | 5 | ||||
| -rw-r--r-- | manifest_xml.py | 18 | 
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): | 
