diff options
author | Timo Lotterbach <timo.lotterbach@bmw-carit.de> | 2016-07-15 16:55:39 +0200 |
---|---|---|
committer | Timo Lotterbach <timo.lotterbach@bmw-carit.de> | 2016-08-30 07:35:03 +0000 |
commit | 488bf092d5992bd1b8f8681c444f2cc283d05bcb (patch) | |
tree | 015fa757c763eb9c9df5bd92250ffdd3cc4282f0 | |
parent | 39252ba028012fd14e4e283217d842fb80206c52 (diff) | |
download | git-repo-488bf092d5992bd1b8f8681c444f2cc283d05bcb.tar.gz |
Repo: fall back to http, if ssh connection fails for http repos
if a gerrit server has ssh and https access enabled, but user access
(for some users) is limited to https, 'repo upload' command will fail
for them.
Gerrit returns a ssh configuration (gerrit/ssh_info), that does not work
for users limited to https.
With this patch repo will test, if the returned ssh configuration from
gerrit/ssh_info is working. if not, it will fall back to https for upload.
Change-Id: If98f472e994f350bf71f35610cd649b163f1ab33
-rw-r--r-- | git_config.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/git_config.py b/git_config.py index 0379181a..09c4b48f 100644 --- a/git_config.py +++ b/git_config.py | |||
@@ -638,7 +638,10 @@ class Remote(object): | |||
638 | self._review_url = http_url | 638 | self._review_url = http_url |
639 | else: | 639 | else: |
640 | host, port = info.split() | 640 | host, port = info.split() |
641 | self._review_url = self._SshReviewUrl(userEmail, host, port) | 641 | if _open_ssh(host, port): |
642 | self._review_url = self._SshReviewUrl(userEmail, host, port) | ||
643 | else: | ||
644 | self._review_url = http_url | ||
642 | except urllib.error.HTTPError as e: | 645 | except urllib.error.HTTPError as e: |
643 | raise UploadError('%s: %s' % (self.review, str(e))) | 646 | raise UploadError('%s: %s' % (self.review, str(e))) |
644 | except urllib.error.URLError as e: | 647 | except urllib.error.URLError as e: |