D6193: config: read configs from directories in lexicographical order

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Wed Apr 3 23:07:17 UTC 2019


martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Mercurial currently reads the .rc files specified in HGRCPATH (and the
  system-default paths) in directory order, which is unspecified. My
  team at work maintains a set of .rc files. So far there has been no
  overlap between them, so we had not noticed this behavior. However, we
  would now like to release some common .rc files and then have another
  one with platform-specific overrides. It would be nice of we can
  determine the load order by choosing names carefully. This patch
  enables that by loading the .rc files in lexicographical order.
  
  Before this patch, the added test case would consistently say "30" on
  my file system (whatever I have -- some Linux FS).

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6193

AFFECTED FILES
  mercurial/rcutil.py
  tests/test-config.t

CHANGE DETAILS

diff --git a/tests/test-config.t b/tests/test-config.t
--- a/tests/test-config.t
+++ b/tests/test-config.t
@@ -211,3 +211,12 @@
   $ hg log --template '{author}\n'
   repo user
   $ cd ..
+
+configs should be readon in lexicographical order
+
+  $ mkdir configs
+  $ for i in `$TESTDIR/seq.py 10 99`; do
+  >    printf "[section]\nkey=$i" > configs/$i.rc
+  > done
+  $ HGRCPATH=configs hg config section.key
+  99
diff --git a/mercurial/rcutil.py b/mercurial/rcutil.py
--- a/mercurial/rcutil.py
+++ b/mercurial/rcutil.py
@@ -29,7 +29,8 @@
     p = util.expandpath(path)
     if os.path.isdir(p):
         join = os.path.join
-        return [join(p, f) for f, k in util.listdir(p) if f.endswith('.rc')]
+        return sorted(join(p, f) for f, k in util.listdir(p)
+                      if f.endswith('.rc'))
     return [p]
 
 def envrcitems(env=None):



To: martinvonz, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list