sshpeer: add a configurable hint for the ssh error message

Adding a possibility to configure error hint to be shown in the case of problems with SSH. Example of such hint can be "Please see http://company/internalwiki/ssh.html".

Test Plan:
- Ran hg pull with broken link and verified the output has no hint by default:

```
pulling from ssh://brokenrepository.com//repo
remote: ssh: Could not resolve hostname brokenrepository.com: Name or service not known
abort: no suitable response from remote hg!
```

- Run hg pull --config ui.ssherrorhint="Please see http://company/internalwiki/ssh.html":

```
pulling from ssh://brokenrepository.com//repo
remote: ssh: Could not resolve hostname brokenrepository.com: Name or service not known
abort: no suitable response from remote hg!
(Please see http://company/internalwiki/ssh.html)
```

Differential Revision: https://phab.mercurial-scm.org/D1431
This commit is contained in:
Zuzanna Mroczek 2017-11-20 01:40:26 -08:00
parent f0bc85352f
commit 344962042e
4 changed files with 27 additions and 2 deletions

View File

@ -964,6 +964,9 @@ coreconfigitem('ui', 'slash',
coreconfigitem('ui', 'ssh',
default='ssh',
)
coreconfigitem('ui', 'ssherrorhint',
default=None,
)
coreconfigitem('ui', 'statuscopies',
default=False,
)

View File

@ -2188,6 +2188,10 @@ User interface controls.
``ssh``
Command to use for SSH connections. (default: ``ssh``)
``ssherrorhint``
A hint shown to the user in the case of SSH error (e.g.
``Please see http://company/internalwiki/ssh.html``)
``strict``
Require exact command names, instead of allowing unambiguous
abbreviations. (default: False)

View File

@ -204,8 +204,9 @@ class sshpeer(wireproto.wirepeer):
self._pipeo = doublepipe(self.ui, self._pipeo, self._pipee)
def badresponse():
self._abort(error.RepoError(_('no suitable response from '
'remote hg')))
msg = _("no suitable response from remote hg")
hint = self.ui.config("ui", "ssherrorhint")
self._abort(error.RepoError(msg, hint=hint))
try:
# skip any noise generated by remote shell

View File

@ -578,3 +578,20 @@ abort during pull is properly reported as such
remote: abort: this is an exercise
abort: pull failed on remote
[255]
abort with no error hint when there is a ssh problem when pulling
$ hg pull ssh://brokenrepository
pulling from ssh://brokenrepository/
remote: ssh: Could not resolve hostname brokenrepository: Name or service not known
abort: no suitable response from remote hg!
[255]
abort with configured error hint when there is a ssh problem when pulling
$ hg pull ssh://brokenrepository --config ui.ssherrorhint="Please see http://company/internalwiki/ssh.html"
pulling from ssh://brokenrepository/
remote: ssh: Could not resolve hostname brokenrepository: Name or service not known
abort: no suitable response from remote hg!
(Please see http://company/internalwiki/ssh.html)
[255]