Patchwork hg: allow usage of XDG_CONFIG_HOME and $HOME/.config/hgrc

login
register
mail settings
Submitter David Demelier
Date Feb. 7, 2017, 4:52 p.m.
Message ID <699fb7d08bdf2329fdb6.1486486336@localhost.localdomain>
Download mbox | patch
Permalink /patch/18345/
State Superseded
Headers show

Comments

David Demelier - Feb. 7, 2017, 4:52 p.m.
# HG changeset patch
# User David Demelier <demelier.david@gmail.com>
# Date 1486485215 -3600
#      Tue Feb 07 17:33:35 2017 +0100
# Node ID 699fb7d08bdf2329fdb64df56e72d6c07cd91285
# 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

Patch

diff -r 1f51b4658f21 -r 699fb7d08bdf 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 699fb7d08bdf 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: