[PATCH 1 of 2] configitems: do not directly match generic items
Boris Feld
boris.feld at octobus.net
Wed Oct 18 14:04:31 UTC 2017
# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1508322368 -7200
# Wed Oct 18 12:26:08 2017 +0200
# Node ID a3110a4c8aa98ebd9fc26702eb81b9366edf7335
# Parent 537de0b14030868e3e850ae388b08f88cabc88e8
# EXP-Topic config.register.fixup
# Available At https://bitbucket.org/octobus/mercurial-devel/
# hg pull https://bitbucket.org/octobus/mercurial-devel/ -r a3110a4c8aa9
configitems: do not directly match generic items
Before this changesets, a literal '.*:foo$' config would match a registered
'.*:foo$' generic. This is wrong since generic should be matched through
regular exception only. This changeset fixes this problem.
Thanks for to Yuya Nishihara for spotting the issue.
diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -67,8 +67,9 @@
self._generics.add(item)
def get(self, key):
- if key in self:
- return self[key]
+ baseitem = super(itemregister, self).get(key)
+ if baseitem is not None and not baseitem.generic:
+ return baseitem
# search for a matching generic item
generics = sorted(self._generics, key=(lambda x: (x.priority, x.name)))
@@ -76,8 +77,7 @@
if item._re.match(key):
return item
- # fallback to dict get
- return super(itemregister, self).get(key)
+ return None
coreitems = {}
More information about the Mercurial-devel
mailing list