# HG changeset patch # User Pierre-Yves David # Date 1432139498 18000 # Node ID c88975a4d2643009a94a12f1e37604712a9d13ee # Parent e461230cc95b29489f6dcdb5739d4434cf9a8a00 sshpeer: run the ssh command unbuffered This is necessary to use non-blocking IO base on polling. Such polling is needed to restore real time output with ssh peer. Changeset fce065538bcf is talking about 5x regression on Mac OS X when playing with this value. So we introduced our own buffering layer in previous changesets. This seems to keep the regression away (we are even issuing much less read). diff -r e461230cc95b -r c88975a4d264 mercurial/sshpeer.py --- a/mercurial/sshpeer.py Sun May 31 00:00:36 2015 -0700 +++ b/mercurial/sshpeer.py Wed May 20 11:31:38 2015 -0500 @@ -87,7 +87,12 @@ # while self.subprocess isn't used, having it allows the subprocess to # to clean up correctly later - self.pipeo, self.pipei, self.pipee, self.subprocess = util.popen4(cmd) + # + # no buffer allow the use of 'select' + # feel free to remove buffering and select usage when we ultimately + # move to threading. + sub = util.popen4(cmd, bufsize=0) + self.pipeo, self.pipei, self.pipee, self.subprocess = sub self.pipei = util.bufferedinputpipe(self.pipei)