diff options
| author | Jelmer Vernooij <jelmer@jelmer.uk> | 2019-12-26 14:21:25 +0000 |
|---|---|---|
| committer | Breezy landing bot <breezy.the.bot@gmail.com> | 2019-12-26 14:21:25 +0000 |
| commit | a426fbb900bca778d2a31547381f53dba5ef6779 (patch) | |
| tree | 577154a4277ba2a109b6b1e58184022904a859f6 | |
| parent | ddf1e331005967e7c95094c8cdadfd18eeca5b51 (diff) | |
| parent | 74100c4c61bcb58a52c5383485761ce3af517051 (diff) | |
github: Handle 403s for pull request creation.
Merged from https://code.launchpad.net/~jelmer/brz/github-perm-denied/+merge/377117
| -rw-r--r-- | breezy/git/remote.py | 4 | ||||
| -rw-r--r-- | breezy/plugins/propose/github.py | 4 |
2 files changed, 5 insertions, 3 deletions
diff --git a/breezy/git/remote.py b/breezy/git/remote.py index e62705ee5c..3fc03fe0ee 100644 --- a/breezy/git/remote.py +++ b/breezy/git/remote.py @@ -203,8 +203,8 @@ def parse_git_error(url, message): base_url, _ = urlutils.split_segment_parameters(url) return HeadUpdateFailed(base_url) if message.startswith('access denied or repository not exported:'): - extra, path = message.split(': ', 1) - return PermissionDenied(path, extra) + extra, path = message.split(':', 1) + return PermissionDenied(path.strip(), extra) if message.endswith('You are not allowed to push code to this project.'): return PermissionDenied(url, message) if message.endswith(' does not appear to be a git repository'): diff --git a/breezy/plugins/propose/github.py b/breezy/plugins/propose/github.py index 68545ab0af..3197d0e42a 100644 --- a/breezy/plugins/propose/github.py +++ b/breezy/plugins/propose/github.py @@ -43,7 +43,7 @@ from ... import ( version_string as breezy_version, ) from ...config import AuthenticationConfig, GlobalStack -from ...errors import InvalidHttpResponse +from ...errors import InvalidHttpResponse, PermissionDenied from ...git.urls import git_url_to_bzr_url from ...i18n import gettext from ...sixish import PY3 @@ -278,6 +278,8 @@ class GitHub(Hoster): response = self._api_request( 'POST', path, body=json.dumps(data).encode('utf-8')) + if response.status == 403: + raise PermissionDenied(path, response.text) if response.status != 201: raise InvalidHttpResponse(path, 'req is invalid %d %r: %r' % (response.status, data, response.text)) return json.loads(response.text) |
