[PATCH v2] hg: allow usage of XDG_CONFIG_HOME and $HOME/.config/hgrc
David Demelier
demelier.david at gmail.com
Tue Feb 7 22:59:59 UTC 2017
# HG changeset patch
# User David Demelier <demelier.david at gmail.com>
# Date 1486485215 -3600
# Tue Feb 07 17:33:35 2017 +0100
# Node ID 880021eb7ec0be00c76739cb647e0f5712420c81
# Parent 1f51b4658f21bbb797e922d155c1046eddccf91d
hg: allow usage of XDG_CONFIG_HOME and $HOME/.config/hgrc
Modern applications must use the following paths to store configuration files:
- $XDG_CONFIG_HOME/hgrc
- $HOME/.config/hgrc (if XDG_CONFIG_HOME is not set)
For convenience, these paths are now evaluated first and the old $HOME/.hgrc is
used as a fallback.
See https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
diff -r 1f51b4658f21 -r 880021eb7ec0 mercurial/help/config.txt
--- a/mercurial/help/config.txt Thu Feb 02 14:19:48 2017 +0100
+++ b/mercurial/help/config.txt Tue Feb 07 17:33:35 2017 +0100
@@ -55,6 +55,8 @@
On Unix, the following files are consulted:
- ``<repo>/.hg/hgrc`` (per-repository)
+ - ``$XDG_CONFIG_HOME/hgrc`` (per-user)
+ - ``$HOME/.config/hgrc`` (per-user)
- ``$HOME/.hgrc`` (per-user)
- ``<install-root>/etc/mercurial/hgrc`` (per-installation)
- ``<install-root>/etc/mercurial/hgrc.d/*.rc`` (per-installation)
diff -r 1f51b4658f21 -r 880021eb7ec0 mercurial/scmposix.py
--- a/mercurial/scmposix.py Thu Feb 02 14:19:48 2017 +0100
+++ b/mercurial/scmposix.py Tue Feb 07 17:33:35 2017 +0100
@@ -41,7 +41,15 @@
if pycompat.sysplatform == 'plan9':
return [encoding.environ['home'] + '/lib/hgrc']
else:
- return [os.path.expanduser('~/.hgrc')]
+ xdg = encoding.environ.get("XDG_CONFIG_HOME")
+ if xdg is not None:
+ return [os.path.join(xdg, "hgrc")]
+ else:
+ cfg = os.path.expanduser("~/.config/hgrc")
+ if os.path.isfile(cfg):
+ return [cfg]
+ else:
+ return [os.path.expanduser('~/.hgrc')]
def termsize(ui):
try:
diff -r 1f51b4658f21 -r 880021eb7ec0 tests/test-xdg.t
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-xdg.t Tue Feb 07 17:33:35 2017 +0100
@@ -0,0 +1,11 @@
+#if no-windows
+
+ $ mkdir xdgconf
+ $ echo '[ui]' > xdgconf/hgrc
+ $ echo 'username = foobar' >> xdgconf/hgrc
+ $ XDG_CONFIG_HOME=xdgconf; export XDG_CONFIG_HOME
+ $ unset HGRCPATH
+ $ hg config ui.username
+ foobar
+
+#endif
More information about the Mercurial-devel
mailing list