D2032: sshpeer: clean up API for sshpeer.__init__ (API)

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Mon Feb 5 03:35:49 UTC 2018


indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Our refactoring left the state of sshpeer.__init__ in a poor
  state. "create" was no longer used. Process/pipe arguments were
  passed poorly. "name" was really a URL.
  
  This commit cleans all that up.
  
  .. api::
  
    sshpeer.sshpeer.__init__ now receives arguments describing an
    existing connection instead of creating a connection itself.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2032

AFFECTED FILES
  mercurial/sshpeer.py
  tests/test-check-interfaces.py

CHANGE DETAILS

diff --git a/tests/test-check-interfaces.py b/tests/test-check-interfaces.py
--- a/tests/test-check-interfaces.py
+++ b/tests/test-check-interfaces.py
@@ -69,8 +69,8 @@
     checkobject(badpeer())
     checkobject(httppeer.httppeer(ui, 'http://localhost'))
     checkobject(localrepo.localpeer(dummyrepo()))
-    checkobject(testingsshpeer(ui, 'ssh://localhost/foo', False,
-                               (None, None, None, None)))
+    checkobject(testingsshpeer(ui, 'ssh://localhost/foo', None, None, None,
+                               None))
     checkobject(bundlerepo.bundlepeer(dummyrepo()))
     checkobject(statichttprepo.statichttppeer(dummyrepo()))
     checkobject(unionrepo.unionpeer(dummyrepo()))
diff --git a/mercurial/sshpeer.py b/mercurial/sshpeer.py
--- a/mercurial/sshpeer.py
+++ b/mercurial/sshpeer.py
@@ -158,12 +158,21 @@
     return proc, pipei, pipeo, pipee
 
 class sshpeer(wireproto.wirepeer):
-    def __init__(self, ui, path, create=False, sshstate=None):
-        self._url = path
+    def __init__(self, ui, url, proc, pipei, pipeo, pipee):
+        """Create a peer from an existing SSH connection.
+
+        ``proc`` is a handle on the underlying SSH process.
+        ``pipei``, ``pipeo``, and ``pipee`` are handles on the stdin,
+        stdout, and stderr file descriptors for that process.
+        """
+        self._url = url
         self._ui = ui
         # self._subprocess is unused. Keeping a handle on the process
         # holds a reference and prevents it from being garbage collected.
-        self._subprocess, self._pipei, self._pipeo, self._pipee = sshstate
+        self._subprocess = proc
+        self._pipei = pipei
+        self._pipeo = pipeo
+        self._pipee = pipee
 
         self._validaterepo()
 
@@ -387,6 +396,4 @@
     proc, pipei, pipeo, pipee = _makeconnection(ui, sshcmd, args, remotecmd,
                                                 remotepath, sshenv)
 
-    sshstate = (proc, pipei, pipeo, pipee)
-
-    return sshpeer(ui, path, create=create, sshstate=sshstate)
+    return sshpeer(ui, path, proc, pipei, pipeo, pipee)



To: indygreg, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list