Mercurial > hg
changeset 46623:b91a695b3b08
config: use level to properly deal with value priority
A higher priority alias will now take precedence over lower priority ones.
This was a requirements step before using alias more widely, especially to
rename existing and established config option.
Differential Revision: https://phab.mercurial-scm.org/D9927
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 29 Jan 2021 12:17:11 +0100 |
parents | a3dced4b7b04 |
children | 357d2ea95ce9 |
files | mercurial/ui.py tests/test-config.t |
diffstat | 2 files changed, 14 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/ui.py Fri Jan 29 11:21:49 2021 +0100 +++ b/mercurial/ui.py Fri Jan 29 12:17:11 2021 +0100 @@ -662,11 +662,18 @@ msg %= (section, name, pycompat.bytestr(default)) self.develwarn(msg, 2, b'warn-config-default') + candidates = [] + config = self._data(untrusted) for s, n in alternates: - candidate = self._data(untrusted).get(s, n, None) + candidate = config.get(s, n, None) if candidate is not None: - value = candidate - break + candidates.append((s, n, candidate)) + if candidates: + + def level(x): + return config.level(x[0], x[1]) + + value = max(candidates, key=level)[2] if self.debugflag and not untrusted and self._reportuntrusted: for s, n in alternates:
--- a/tests/test-config.t Fri Jan 29 11:21:49 2021 +0100 +++ b/tests/test-config.t Fri Jan 29 12:17:11 2021 +0100 @@ -476,15 +476,12 @@ earlier will be considered "lower level" and the config read later would be considered "higher level". And higher level values wins. -BROKEN: currently not the case. - $ HGRCPATH="file-A.rc" hg log -r . value-A $ HGRCPATH="file-B.rc" hg log -r . value-B $ HGRCPATH="file-A.rc:file-B.rc" hg log -r . - value-A (known-bad-output !) - value-B (missing-correct-output !) + value-B Alias and include ----------------- @@ -493,15 +490,12 @@ See the case above for details about the two config options used. $ HGRCPATH="file-C.rc" hg log -r . - value-included (known-bad-output !) - value-C (missing-correct-output !) + value-C $ HGRCPATH="file-D.rc" hg log -r . - value-D (known-bad-output !) - value-included (missing-correct-output !) + value-included command line override --------------------- $ HGRCPATH="file-A.rc:file-B.rc" hg log -r . --config ui.logtemplate="value-CLI\n" - value-A (known-bad-output !) - value-CLI (missing-correct-output !) + value-CLI