changeset 1028:25e7ea0f2cff

Add commands.debugconfig. This lets us both view the actual config data that hg is using, and drive editors that need to see this information.
author Bryan O'Sullivan <bos@serpentine.com>
date Tue, 23 Aug 2005 21:30:12 -0700
parents cb31576ed3e4
children b5f0ccad8917
files mercurial/commands.py mercurial/ui.py
diffstat 2 files changed, 20 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Tue Aug 23 16:46:10 2005 -0700
+++ b/mercurial/commands.py	Tue Aug 23 21:30:12 2005 -0700
@@ -597,6 +597,13 @@
     if errors:
         raise util.Abort(".hg/dirstate inconsistent with current parent's manifest")
 
+def debugconfig(ui):
+    try:
+        repo = hg.repository(ui)
+    except: pass
+    for section, name, value in ui.walkconfig():
+        ui.write('%s.%s=%s\n' % (section, name, value))
+
 def debugstate(ui, repo):
     """show the contents of the current dirstate"""
     repo.dirstate.read()
@@ -1308,6 +1315,7 @@
          'hg commit [OPTION]... [FILE]...'),
     "copy": (copy, [], 'hg copy SOURCE DEST'),
     "debugcheckstate": (debugcheckstate, [], 'debugcheckstate'),
+    "debugconfig": (debugconfig, [], 'debugconfig'),
     "debugstate": (debugstate, [], 'debugstate'),
     "debugindex": (debugindex, [], 'debugindex FILE'),
     "debugindexdot": (debugindexdot, [], 'debugindexdot FILE'),
@@ -1446,7 +1454,7 @@
               ('', 'time', None, 'time how long the command takes'),
              ]
 
-norepo = "clone init version help debugindex debugindexdot paths"
+norepo = "clone init version help debugconfig debugindex debugindexdot paths"
 
 def find(cmd):
     for e in table.keys():
--- a/mercurial/ui.py	Tue Aug 23 16:46:10 2005 -0700
+++ b/mercurial/ui.py	Tue Aug 23 21:30:12 2005 -0700
@@ -52,6 +52,17 @@
             return self.cdata.items(section)
         return []
 
+    def walkconfig(self):
+        seen = {}
+        for (section, name), value in self.overlay.iteritems():
+            yield section, name, value
+            seen[section, name] = 1
+        for section in self.cdata.sections():
+            for name, value in self.cdata.items(section):
+                if (section, name) in seen: continue
+                yield section, name, value.replace('\n', '\\n')
+                seen[section, name] = 1
+
     def username(self):
         return (os.environ.get("HGUSER") or
                 self.config("ui", "username") or