[PATCH RFC] ui: provide official way to reset internal state per command
Yuya Nishihara
yuya at tcha.org
Sun Jun 12 05:31:15 UTC 2016
# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1465708046 -32400
# Sun Jun 12 14:07:26 2016 +0900
# Node ID 58d3b0dd7f03e318fb534103b39bf93aeb4c03b1
# Parent c27dc3c31222c7f74331221a3d25566146feecac
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 --git a/mercurial/commandserver.py b/mercurial/commandserver.py
--- a/mercurial/commandserver.py
+++ b/mercurial/commandserver.py
@@ -229,12 +229,8 @@ class server(object):
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 --git a/mercurial/ui.py b/mercurial/ui.py
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -138,6 +138,11 @@ class ui(object):
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)
More information about the Mercurial-devel
mailing list