sshpeer: add a configurable hint for the ssh error message
authorZuzanna Mroczek <zuza@fb.com>
Mon, 20 Nov 2017 01:40:26 -0800
changeset 35108 8b1c887d52e7
parent 35107 b22a0d9e0a83
child 35109 e96613048bdd
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
mercurial/configitems.py
mercurial/help/config.txt
mercurial/sshpeer.py
tests/test-ssh.t
--- 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]