diff mercurial/ui.py @ 15919:69e792cf7851

config: have a way to backup and restore value in config This is introduce to allow temporary overwriting of a config value while being able to reinstall the old value once done. The main advantage over using ``config`` and ``setconfig`` is that backup and restore will properly restore the lack of any config. Restoring the fact that there was no value is important to allow config user to keep using meaniful default value. A more naive approach will result in the following scenario:: Before: config(section, item, my_default) --> my_default temporal overwrite old = config(section, item) … setconfig(section, item, old) After config(section, item, my_default) --> None The first user of this feature should be mq to overwriting minimal phase of future commit.
author Pierre-Yves David <pierre-yves.david@logilab.fr>
date Wed, 18 Jan 2012 16:52:26 +0100
parents ee112eb69d2a
children ae5f92e154d3 c14898df3b92
line wrap: on
line diff
--- a/mercurial/ui.py	Tue Jan 17 11:08:23 2012 +0100
+++ b/mercurial/ui.py	Wed Jan 18 16:52:26 2012 +0100
@@ -142,6 +142,15 @@
             self._trustusers.update(self.configlist('trusted', 'users'))
             self._trustgroups.update(self.configlist('trusted', 'groups'))
 
+    def backupconfig(self, section, item):
+        return (self._ocfg.backup(section, item),
+                self._tcfg.backup(section, item),
+                self._ucfg.backup(section, item),)
+    def restoreconfig(self, data):
+        self._ocfg.restore(data[0])
+        self._tcfg.restore(data[1])
+        self._ucfg.restore(data[2])
+
     def setconfig(self, section, name, value, overlay=True):
         if overlay:
             self._ocfg.set(section, name, value)