@@ -32,12 +32,14 @@
:section: the official config section where to find this item,
:name: the official name within the section,
:default: default value for this item,
+ :alias: optional list of tuples as alternatives.
"""
- def __init__(self, section, name, default=None):
+ def __init__(self, section, name, default=None, alias=()):
self.section = section
self.name = name
self.default = default
+ self.alias = list(alias)
coreitems = {}
@@ -68,3 +70,6 @@
coreconfigitem('ui', 'quiet',
default=False,
)
+coreconfigitem('ui', 'username',
+ alias=[('ui', 'user')]
+)
@@ -448,38 +448,39 @@
def _config(self, section, name, default=_unset, untrusted=False):
value = default
- if isinstance(name, list):
- alternates = name
- else:
- item = self._knownconfig.get(section, {}).get(name)
- if default is _unset:
- if item is None:
- value = default
- elif callable(item.default):
+ item = self._knownconfig.get(section, {}).get(name)
+ alternates = [(section, name)]
+
+ if item is not None:
+ alternates.extend(item.alias)
+
+ if default is _unset:
+ if item is None:
+ value = default
+ elif callable(item.default):
value = item.default()
- else:
- value = item.default
- elif item is not None:
- msg = ("specifying a default value for a registered "
- "config item: '%s.%s' '%s'")
- msg %= (section, name, default)
- self.develwarn(msg, 2, 'warn-config-default')
+ else:
+ value = item.default
+ elif item is not None:
+ msg = ("specifying a default value for a registered "
+ "config item: '%s.%s' '%s'")
+ msg %= (section, name, default)
+ self.develwarn(msg, 2, 'warn-config-default')
- alternates = [name]
-
- for n in alternates:
- candidate = self._data(untrusted).get(section, n, None)
+ for s, n in alternates:
+ candidate = self._data(untrusted).get(s, n, None)
if candidate is not None:
value = candidate
+ section = s
name = n
break
if self.debugflag and not untrusted and self._reportuntrusted:
- for n in alternates:
- uvalue = self._ucfg.get(section, n)
+ for s, n in alternates:
+ uvalue = self._ucfg.get(s, n)
if uvalue is not None and uvalue != value:
self.debug("ignoring untrusted configuration option "
- "%s.%s = %s\n" % (section, n, uvalue))
+ "%s.%s = %s\n" % (s, n, uvalue))
return value
def configsuboptions(self, section, name, default=_unset, untrusted=False):
@@ -744,7 +745,7 @@
"""
user = encoding.environ.get("HGUSER")
if user is None:
- user = self.config("ui", ["username", "user"])
+ user = self.config("ui", "username")
if user is not None:
user = os.path.expandvars(user)
if user is None:
@@ -0,0 +1,32 @@
+verify that aliases are evaluated as well
+
+ $ hg init aliastest
+ $ cd aliastest
+ $ cat > .hg/hgrc << EOF
+ > [ui]
+ > user = repo user
+ > EOF
+ $ touch index
+ $ unset HGUSER
+ $ hg ci -Am test
+ adding index
+ $ hg log --template '{author}\n'
+ repo user
+ $ cd ..
+
+alias has lower priority
+
+ $ hg init aliaspriority
+ $ cd aliaspriority
+ $ cat > .hg/hgrc << EOF
+ > [ui]
+ > user = alias user
+ > username = repo user
+ > EOF
+ $ touch index
+ $ unset HGUSER
+ $ hg ci -Am test
+ adding index
+ $ hg log --template '{author}\n'
+ repo user
+ $ cd ..