ui: don't fixup [paths] sub-options
authorGregory Szorc <gregory.szorc@gmail.com>
Sat, 25 Jun 2016 18:35:14 -0700
changeset 29412 b62bce819d0c
parent 29411 e1778b9c8d53
child 29413 31d3ab7985b8
ui: don't fixup [paths] sub-options As part of developing a subsequent patch I discovered that sub-option values like "." were getting converted to paths. This is because the [paths] section is treated specially during config loading. This patch prevents post-processing sub-options from the [paths] section.
mercurial/ui.py
tests/test-config.t
--- a/mercurial/ui.py	Sat Jun 25 07:26:43 2016 -0700
+++ b/mercurial/ui.py	Sat Jun 25 18:35:14 2016 -0700
@@ -228,6 +228,9 @@
             root = root or os.getcwd()
             for c in self._tcfg, self._ucfg, self._ocfg:
                 for n, p in c.items('paths'):
+                    # Ignore sub-options.
+                    if ':' in n:
+                        continue
                     if not p:
                         continue
                     if '%%' in p:
--- a/tests/test-config.t	Sat Jun 25 07:26:43 2016 -0700
+++ b/tests/test-config.t	Sat Jun 25 18:35:14 2016 -0700
@@ -90,3 +90,15 @@
 
   $ hg config Section.idontexist
   [1]
+
+sub-options in [paths] aren't expanded
+
+  $ cat > .hg/hgrc << EOF
+  > [paths]
+  > foo = ~/foo
+  > foo:suboption = ~/foo
+  > EOF
+
+  $ hg showconfig paths
+  paths.foo:suboption=~/foo
+  paths.foo=$TESTTMP/foo