contrib/check-config.py
changeset 33195 5d8942dbe49e
parent 32849 e9fc5550be46
child 33570 e470f12d7d05
--- a/contrib/check-config.py	Fri Jun 30 03:28:02 2017 +0200
+++ b/contrib/check-config.py	Sat Jul 01 20:34:27 2017 -0700
@@ -13,6 +13,7 @@
 
 foundopts = {}
 documented = {}
+allowinconsistent = set()
 
 configre = re.compile(r'''
     # Function call
@@ -36,6 +37,11 @@
 
 configpartialre = (r"""ui\.config""")
 
+ignorere = re.compile(r'''
+    \#\s(?P<reason>internal|experimental|deprecated|developer|inconsistent)\s
+    config:\s(?P<config>\S+\.\S+)$
+    ''', re.VERBOSE | re.MULTILINE)
+
 def main(args):
     for f in args:
         sect = ''
@@ -82,10 +88,12 @@
                 documented[m.group(1)] = 1
 
             # look for ignore markers
-            m = re.search(r'# (?:internal|experimental|deprecated|developer)'
-                          ' config: (\S+\.\S+)$', l)
+            m = ignorere.search(l)
             if m:
-                documented[m.group(1)] = 1
+                if m.group('reason') == 'inconsistent':
+                    allowinconsistent.add(m.group('config'))
+                else:
+                    documented[m.group('config')] = 1
 
             # look for code-like bits
             line = carryover + l
@@ -100,7 +108,8 @@
                     default = ''
                 if re.match('[a-z.]+$', default):
                     default = '<variable>'
-                if name in foundopts and (ctype, default) != foundopts[name]:
+                if (name in foundopts and (ctype, default) != foundopts[name]
+                    and name not in allowinconsistent):
                     print(l)
                     print("conflict on %s: %r != %r" % (name, (ctype, default),
                                                         foundopts[name]))