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
--- a/mercurial/configitems.py Thu Nov 16 15:01:21 2017 -0800
+++ b/mercurial/configitems.py Mon Nov 20 01:40:26 2017 -0800
@@ -964,6 +964,9 @@
coreconfigitem('ui', 'ssh',
default='ssh',
)
+coreconfigitem('ui', 'ssherrorhint',
+ default=None,
+)
coreconfigitem('ui', 'statuscopies',
default=False,
)
--- a/mercurial/help/config.txt Thu Nov 16 15:01:21 2017 -0800
+++ b/mercurial/help/config.txt Mon Nov 20 01:40:26 2017 -0800
@@ -2188,6 +2188,10 @@
``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)
--- a/mercurial/sshpeer.py Thu Nov 16 15:01:21 2017 -0800
+++ b/mercurial/sshpeer.py Mon Nov 20 01:40:26 2017 -0800
@@ -204,8 +204,9 @@
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
--- a/tests/test-ssh.t Thu Nov 16 15:01:21 2017 -0800
+++ b/tests/test-ssh.t Mon Nov 20 01:40:26 2017 -0800
@@ -578,3 +578,20 @@
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]