diff --git a/mercurial/helptext/environment.txt b/mercurial/helptext/environment.txt --- a/mercurial/helptext/environment.txt +++ b/mercurial/helptext/environment.txt @@ -49,6 +49,9 @@ - if it's a directory, all files ending with .rc are added - otherwise, the file itself will be added +HGRCSKIPREPO + When set, the .hg/hgrc from repositories are not read. + HGPLAIN When set, this disables any configuration settings that might change Mercurial's default output. This includes encoding, diff --git a/mercurial/helptext/scripting.txt b/mercurial/helptext/scripting.txt --- a/mercurial/helptext/scripting.txt +++ b/mercurial/helptext/scripting.txt @@ -74,6 +74,14 @@ like the username and extensions that may be required to interface with a repository. +HGRCSKIPREPO + When set, the .hg/hgrc from repositories are not read. + + Note that not reading the repository's configuration can have + unintended consequences, as the repository config files can define + things like extensions that are required for access to the + repository. + Command-line Flags ================== diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -676,6 +676,8 @@ configs are loaded. For example, an extension may wish to pull in configs from alternate files or sources. """ + if b'HGRCSKIPREPO' in encoding.environ: + return False try: ui.readconfig(hgvfs.join(b'hgrc'), root=wdirvfs.base) return True diff --git a/tests/test-hgrc.t b/tests/test-hgrc.t --- a/tests/test-hgrc.t +++ b/tests/test-hgrc.t @@ -258,3 +258,16 @@ plain: True read config from: $TESTTMP/hgrc $TESTTMP/hgrc:17: paths.foo=$TESTTMP/bar + +Test we can skip the user configuration + + $ cat >> .hg/hgrc < [paths] + > elephant = babar + > EOF + $ hg path + elephant = $TESTTMP/babar + foo = $TESTTMP/bar + $ HGRCSKIPREPO=1 hg path + foo = $TESTTMP/bar +