On Mon, Mar 12, 2018 at 7:17 AM, Yuya Nishihara <y...@tcha.org> wrote:

> # HG changeset patch
> # User Yuya Nishihara <y...@tcha.org>
> # Date 1520858773 -32400
> #      Mon Mar 12 21:46:13 2018 +0900
> # Node ID e6071590cd3e6e376ff45a11204065f08f72eee8
> # Parent  d3dd691a3fce0c501a34ed68d1a08b563a78794c
> sshpeer: drop support for not reading stderr
>
> It's handled by caller now. This patch backs out most of 1151c731686e and
> 1a36ef7df70a.
>

I'm OK with this approach if part 2 is the path forward. I considered this
feature a bit hacky TBH and would be happy to see the code deleted.


>
> diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py
> --- a/mercurial/debugcommands.py
> +++ b/mercurial/debugcommands.py
> @@ -2759,19 +2759,16 @@ def debugwireproto(ui, repo, **opts):
>
>          if opts['peer'] == 'ssh1':
>              ui.write(_('creating ssh peer for wire protocol version 1\n'))
> -            peer = sshpeer.sshv1peer(ui, url, proc, stdin, stdout, stderr,
> -                                     None, autoreadstderr=autoreadstderr)
> +            peer = sshpeer.sshv1peer(ui, url, proc, stdin, stdout,
> stderr, None)
>          elif opts['peer'] == 'ssh2':
>              ui.write(_('creating ssh peer for wire protocol version 2\n'))
> -            peer = sshpeer.sshv2peer(ui, url, proc, stdin, stdout, stderr,
> -                                     None, autoreadstderr=autoreadstderr)
> +            peer = sshpeer.sshv2peer(ui, url, proc, stdin, stdout,
> stderr, None)
>          elif opts['peer'] == 'raw':
>              ui.write(_('using raw connection to peer\n'))
>              peer = None
>          else:
>              ui.write(_('creating ssh peer from handshake results\n'))
> -            peer = sshpeer.makepeer(ui, url, proc, stdin, stdout, stderr,
> -                                    autoreadstderr=autoreadstderr)
> +            peer = sshpeer.makepeer(ui, url, proc, stdin, stdout, stderr)
>
>      else:
>          raise error.Abort(_('only --localssh is currently supported'))
> diff --git a/mercurial/sshpeer.py b/mercurial/sshpeer.py
> --- a/mercurial/sshpeer.py
> +++ b/mercurial/sshpeer.py
> @@ -339,16 +339,13 @@ def _performhandshake(ui, stdin, stdout,
>      return protoname, caps
>
>  class sshv1peer(wireproto.wirepeer):
> -    def __init__(self, ui, url, proc, stdin, stdout, stderr, caps,
> -                 autoreadstderr=True):
> +    def __init__(self, ui, url, proc, stdin, stdout, stderr, caps):
>          """Create a peer from an existing SSH connection.
>
>          ``proc`` is a handle on the underlying SSH process.
>          ``stdin``, ``stdout``, and ``stderr`` are handles on the stdio
> -        pipes for that process.
> +        pipes for that process. ``stderr`` may be None.
>          ``caps`` is a set of capabilities supported by the remote.
> -        ``autoreadstderr`` denotes whether to automatically read from
> -        stderr and to forward its output.
>          """
>          self._url = url
>          self._ui = ui
> @@ -358,7 +355,7 @@ class sshv1peer(wireproto.wirepeer):
>
>          # And we hook up our "doublepipe" wrapper to allow querying
>          # stderr any time we perform I/O.
> -        if autoreadstderr:
> +        if stderr:
>              stdout = doublepipe(ui, util.bufferedinputpipe(stdout),
> stderr)
>              stdin = doublepipe(ui, stdin, stderr)
>
> @@ -366,7 +363,6 @@ class sshv1peer(wireproto.wirepeer):
>          self._pipei = stdout
>          self._pipee = stderr
>          self._caps = caps
> -        self._autoreadstderr = autoreadstderr
>
>      # Commands that have a "framed" response where the first line of the
>      # response contains the length of that response.
> @@ -512,12 +508,10 @@ class sshv1peer(wireproto.wirepeer):
>      def _getamount(self):
>          l = self._pipei.readline()
>          if l == '\n':
> -            if self._autoreadstderr:
> -                self._readerr()
> +            self._readerr()
>              msg = _('check previous remote output')
>              self._abort(error.OutOfBandError(hint=msg))
> -        if self._autoreadstderr:
> -            self._readerr()
> +        self._readerr()
>          try:
>              return int(l)
>          except ValueError:
> @@ -536,8 +530,7 @@ class sshv1peer(wireproto.wirepeer):
>              self._pipeo.write(data)
>          if flush:
>              self._pipeo.flush()
> -        if self._autoreadstderr:
> -            self._readerr()
> +        self._readerr()
>
>  class sshv2peer(sshv1peer):
>      """A peer that speakers version 2 of the transport protocol."""
> @@ -545,7 +538,7 @@ class sshv2peer(sshv1peer):
>      # And handshake is performed before the peer is instantiated. So
>      # we need no custom code.
>
> -def makepeer(ui, path, proc, stdin, stdout, stderr, autoreadstderr=True):
> +def makepeer(ui, path, proc, stdin, stdout, stderr):
>      """Make a peer instance from existing pipes.
>
>      ``path`` and ``proc`` are stored on the eventual peer instance and may
> @@ -566,11 +559,9 @@ def makepeer(ui, path, proc, stdin, stdo
>          raise
>
>      if protoname == wireprototypes.SSHV1:
> -        return sshv1peer(ui, path, proc, stdin, stdout, stderr, caps,
> -                         autoreadstderr=autoreadstderr)
> +        return sshv1peer(ui, path, proc, stdin, stdout, stderr, caps)
>      elif protoname == wireprototypes.SSHV2:
> -        return sshv2peer(ui, path, proc, stdin, stdout, stderr, caps,
> -                         autoreadstderr=autoreadstderr)
> +        return sshv2peer(ui, path, proc, stdin, stdout, stderr, caps)
>      else:
>          _cleanuppipes(ui, stdout, stdin, stderr)
>          raise error.RepoError(_('unknown version of SSH protocol: %s') %
>
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to