Mercurial > public > mercurial-scm > hg-stable
diff hgext/chgserver.py @ 28516:3bf2892f685f
chgserver: handle ParseError during validate
Currently the validate command in chgserver expects config can be loaded
without issues but the config can be broken and chg will print a stacktrace
instead of the parsing error, if a chg server is already running.
This patch adds a handler for ParseError in validate and a new instruction
"exit" to make the client exit without abortmsg. A test is also added to make
sure it will behave as expected.
author | Jun Wu <quark@fb.com> |
---|---|
date | Mon, 14 Mar 2016 12:52:35 +0000 |
parents | 0747ef2c4ab2 |
children | aa082a8125da |
line wrap: on
line diff
--- a/hgext/chgserver.py Mon Mar 14 12:32:09 2016 +0000 +++ b/hgext/chgserver.py Mon Mar 14 12:52:35 2016 +0000 @@ -429,9 +429,17 @@ outdated server. - "redirect $path", the client should try to connect to another server instead. + - "exit $n", the client should exit directly with code n. + This may happen if we cannot parse the config. """ args = self._readlist() - self.ui = _renewui(self.ui, args) + try: + self.ui = _renewui(self.ui, args) + except error.ParseError as inst: + dispatch._formatparse(self.ui.warn, inst) + self.ui.flush() + self.cresult.write('exit 255') + return newhash = hashstate.fromui(self.ui, self.hashstate.mtimepaths) insts = [] if newhash.mtimehash != self.hashstate.mtimehash: