diff --git a/mercurial/ui.py b/mercurial/ui.py --- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -266,6 +266,8 @@ class ui(object): user = os.environ.get("HGUSER") if user is None: user = self.config("ui", "username") + if user is not None: + user = os.path.expandvars(user) if user is None: user = os.environ.get("EMAIL") if user is None and self.configbool("ui", "askusername"): diff --git a/tests/test-hgrc b/tests/test-hgrc --- a/tests/test-hgrc +++ b/tests/test-hgrc @@ -29,6 +29,28 @@ echo '%include $FAKEPATH/no-such-file' > hg version 2>&1 | sed -e "s|$HGRCPATH|\$HGRCPATH|" unset FAKEPATH +echo "% username expansion" +olduser=$HGUSER +unset HGUSER + +FAKEUSER='John Doe' +export FAKEUSER +echo '[ui]' > $HGRCPATH +echo 'username = $FAKEUSER' >> $HGRCPATH + +hg init usertest +cd usertest +touch bar +hg commit --addremove --quiet -m "added bar" +hg log --template "{author}\n" +cd .. + +hg showconfig | sed -e "s:$p:...:" + +unset FAKEUSER +HGUSER=$olduser +export HGUSER + # HGPLAIN cd .. p=`pwd` diff --git a/tests/test-hgrc.out b/tests/test-hgrc.out --- a/tests/test-hgrc.out +++ b/tests/test-hgrc.out @@ -10,6 +10,9 @@ hg: config error at $HGRCPATH:2: ' x = foo.bar=a\nb\nc\nde\nfg foo.baz=bif cb hg: config error at $HGRCPATH:1: cannot include /path/to/nowhere/no-such-file (No such file or directory) +% username expansion +John Doe +ui.username=$FAKEUSER % customized hgrc read config from: .../.hgrc .../.hgrc:13: alias.log=log -g