[Updated] [+- ] D8656: localrepo: load the share source .hg/hgrc also in share-safe mode
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Thu Jun 25 08:53:43 UTC 2020
pulkit updated this revision to Diff 21704.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D8656?vs=21699&id=21704
BRANCH
default
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D8656/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D8656
AFFECTED FILES
mercurial/localrepo.py
tests/test-share-safe.t
CHANGE DETAILS
diff --git a/tests/test-share-safe.t b/tests/test-share-safe.t
--- a/tests/test-share-safe.t
+++ b/tests/test-share-safe.t
@@ -66,4 +66,23 @@
$ echo c > c
$ hg ci -Aqm "added c"
+Check that config of the source repository is also loaded
+
+ $ hg showconfig ui.curses
+ [1]
+
+ $ echo "[ui]" >> ../source/.hg/hgrc
+ $ echo "curses=true" >> ../source/.hg/hgrc
+
+ $ hg showconfig ui.curses
+ true
+
+However, local .hg/hgrc should override the config set by share source
+
+ $ echo "[ui]" >> .hg/hgrc
+ $ echo "curses=false" >> .hg/hgrc
+
+ $ hg showconfig ui.curses
+ false
+
$ hg unshare
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -568,7 +568,7 @@
# The .hg/hgrc file may load extensions or contain config options
# that influence repository construction. Attempt to load it and
# process any new extensions that it may have pulled in.
- if loadhgrc(ui, wdirvfs, hgvfs, requirements):
+ if loadhgrc(ui, wdirvfs, hgvfs, requirements, sharedvfs):
afterhgrcload(ui, wdirvfs, hgvfs, requirements)
extensions.loadall(ui)
extensions.populateui(ui)
@@ -697,7 +697,7 @@
)
-def loadhgrc(ui, wdirvfs, hgvfs, requirements):
+def loadhgrc(ui, wdirvfs, hgvfs, requirements, sharedvfs=None):
"""Load hgrc files/content into a ui instance.
This is called during repository opening to load any additional
@@ -708,9 +708,20 @@
Extensions should monkeypatch this function to modify how per-repo
configs are loaded. For example, an extension may wish to pull in
configs from alternate files or sources.
+
+ sharedvfs is vfs object pointing to source repo if the current one is a
+ shared one
"""
if not rcutil.use_repo_hgrc():
return False
+
+ # first load config from shared source if we has to
+ if SHARESAFE_REQUIREMENT in requirements and sharedvfs:
+ try:
+ ui.readconfig(sharedvfs.join(b'hgrc'), root=sharedvfs.base)
+ except IOError:
+ pass
+
try:
ui.readconfig(hgvfs.join(b'hgrc'), root=wdirvfs.base)
return True
To: pulkit, #hg-reviewers
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20200625/0a1e5481/attachment-0002.html>
More information about the Mercurial-patches
mailing list