commandserver: do not set nontty flag if channel is replaced by a real file
authorYuya Nishihara <yuya@tcha.org>
Mon, 14 Dec 2015 23:13:42 +0900
changeset 27565 e7937438e3f7
parent 27564 80b53082a353
child 27566 5d6f984c8375
commandserver: do not set nontty flag if channel is replaced by a real file This prepares for porting the chg server. In chg, a server receives client's stdio over a UNIX domain socket to override server channels. This is because chg should behave as if it is a normal hg command attached to tty. "nontty" is not wanted. This patch is corresponding to the following change. This doesn't test the identity of "cin" object because the current version of chg reopens stdio to apply buffering mode. https://bitbucket.org/yuja/chg/commits/c48c7aed5fc0
mercurial/commandserver.py
--- a/mercurial/commandserver.py	Tue Dec 22 08:00:03 2015 +0000
+++ b/mercurial/commandserver.py	Mon Dec 14 23:13:42 2015 +0900
@@ -215,8 +215,11 @@
             self.repo.invalidateall()
 
         for ui in uis:
-            # any kind of interaction must use server channels
-            ui.setconfig('ui', 'nontty', 'true', 'commandserver')
+            # any kind of interaction must use server channels, but chg may
+            # replace channels by fully functional tty files. so nontty is
+            # enforced only if cin is a channel.
+            if not util.safehasattr(self.cin, 'fileno'):
+                ui.setconfig('ui', 'nontty', 'true', 'commandserver')
 
         req = dispatch.request(args[:], copiedui, self.repo, self.cin,
                                self.cout, self.cerr)