diff -r a93fe297dfb3 -r 7cdd47d9ccf8 mercurial/chgserver.py --- a/mercurial/chgserver.py Wed Sep 19 22:57:47 2018 +0900 +++ b/mercurial/chgserver.py Wed Sep 19 23:11:07 2018 +0900 @@ -456,7 +456,16 @@ os.umask(mask) def runcommand(self): - return super(chgcmdserver, self).runcommand() + # pager may be attached within the runcommand session, which should + # be detached at the end of the session. otherwise the pager wouldn't + # receive EOF. + globaloldios = self._oldios + self._oldios = [] + try: + return super(chgcmdserver, self).runcommand() + finally: + self._restoreio() + self._oldios = globaloldios def setenv(self): """Clear and update os.environ