diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -715,18 +715,29 @@ if not rcutil.use_repo_hgrc(): return False + ret = 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) + ret = True except IOError: pass try: ui.readconfig(hgvfs.join(b'hgrc'), root=wdirvfs.base) - return True + ret = True except IOError: - return False + pass + + if sharedvfs is None: + try: + ui.readconfig(hgvfs.join(b'nonsharedrc'), root=wdirvfs.base) + ret = True + except IOError: + pass + + return ret def afterhgrcload(ui, wdirvfs, hgvfs, requirements): 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 @@ -174,6 +174,21 @@ date: Thu Jan 01 00:00:00 1970 +0000 summary: added c + +Testing that nonsharedrc is loaded for source and not shared + + $ cd ../source + $ touch .hg/nonsharedrc + $ echo "[ui]" >> .hg/nonsharedrc + $ echo "traceback=true" >> .hg/nonsharedrc + + $ hg showconfig ui.traceback + true + + $ cd ../shared1 + $ hg showconfig ui.traceback + [1] + Unsharing works $ cd ../shared1