[PATCH] windows: read all global config files, not just the first (issue4491) (BC)

Augie Fackler raf at durin42.com
Tue Oct 13 09:59:54 CDT 2015


On Mon, Oct 12, 2015 at 08:14:55PM +0200, Mads Kiilerich wrote:
> # HG changeset patch
> # User Mads Kiilerich <madski at unity3d.com>
> # Date 1444673592 -7200
> #      Mon Oct 12 20:13:12 2015 +0200
> # Node ID 7c6536ae3b9a44d2a04a53989b9ae775745e1cb9
> # Parent  6e715040c1725b5debce888c4f7d3fdbf55cc900
> windows: read all global config files, not just the first (issue4491) (BC)

Dang. Queued, thanks for finding this!

>
> On windows, hgrc.d/*.rc would not be read if mercurial.ini was found. That was
> far from obvious from the documentation and different from the behavior on
> posix systems.
>
> As a consequence of this, TortoiseHg cacert configuration placed in hgrc.d
> would not be read if an old global mercurial.ini still existed.
>
> "hg config -g" could also crash when no global configuration files could be
> found.
>
> Instead, make windows behave like posix and read all global configuration
> files.
>
> The documentation was in a way right that individual config settings in the
> global Mercurial.ini would override settings from for example .hgrc.d\*.rc, but
> only because the .d files not would be read at all if a Mercurial.ini was
> found. The ordering in the documentation is thus changed to match the code.
>
> diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt
> --- a/mercurial/help/config.txt
> +++ b/mercurial/help/config.txt
> @@ -62,9 +62,9 @@ ones.
>    - ``%USERPROFILE%\Mercurial.ini`` (per-user)
>    - ``%HOME%\.hgrc`` (per-user)
>    - ``%HOME%\Mercurial.ini`` (per-user)
> +  - ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial`` (per-installation)
> +  - ``<install-dir>\hgrc.d\*.rc`` (per-installation)
>    - ``<install-dir>\Mercurial.ini`` (per-installation)
> -  - ``<install-dir>\hgrc.d\*.rc`` (per-installation)
> -  - ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial`` (per-installation)
>    - ``<internal>/default.d/*.rc`` (defaults)
>
>    .. note::
> diff --git a/mercurial/scmwindows.py b/mercurial/scmwindows.py
> --- a/mercurial/scmwindows.py
> +++ b/mercurial/scmwindows.py
> @@ -9,16 +9,13 @@ def systemrcpath():
>      filename = util.executablepath()
>      # Use mercurial.ini found in directory with hg.exe
>      progrc = os.path.join(os.path.dirname(filename), 'mercurial.ini')
> -    if os.path.isfile(progrc):
> -        rcpath.append(progrc)
> -        return rcpath
> +    rcpath.append(progrc)
>      # Use hgrc.d found in directory with hg.exe
>      progrcd = os.path.join(os.path.dirname(filename), 'hgrc.d')
>      if os.path.isdir(progrcd):
>          for f, kind in osutil.listdir(progrcd):
>              if f.endswith('.rc'):
>                  rcpath.append(os.path.join(progrcd, f))
> -        return rcpath
>      # else look for a system rcpath in the registry
>      value = util.lookupreg('SOFTWARE\\Mercurial', None,
>                             _winreg.HKEY_LOCAL_MACHINE)
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list