# HG changeset patch # User Yuya Nishihara # Date 1465708046 -32400 # Node ID d269e7db2f55f812c9ee1efe5626602614174df3 # Parent f652e84f23f2ea6fa6464d6a4782bf58b502d38a ui: provide official way to reset internal state per command This will allow us to clear in-memory password storage per runcommand(). I've updated commandserver to call resetstate() of both ui and repo.ui because they may have different states in theory. diff -r f652e84f23f2 -r d269e7db2f55 mercurial/commandserver.py --- a/mercurial/commandserver.py Sat Jun 11 10:17:49 2016 +0900 +++ b/mercurial/commandserver.py Sun Jun 12 14:07:26 2016 +0900 @@ -229,12 +229,8 @@ self.repo.ui = self.repo.dirstate._ui = repoui self.repo.invalidateall() - # reset last-print time of progress bar per command - # (progbar is singleton, we don't have to do for all uis) - if copiedui._progbar: - copiedui._progbar.resetstate() - for ui in uis: + ui.resetstate() # 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. diff -r f652e84f23f2 -r d269e7db2f55 mercurial/ui.py --- a/mercurial/ui.py Sat Jun 11 10:17:49 2016 +0900 +++ b/mercurial/ui.py Sun Jun 12 14:07:26 2016 +0900 @@ -138,6 +138,11 @@ def copy(self): return self.__class__(self) + def resetstate(self): + """Clear internal state that shouldn't persist across commands""" + if self._progbar: + self._progbar.resetstate() # reset last-print time of progress bar + def formatter(self, topic, opts): return formatter.formatter(self, topic, opts)