D5503: vfs: add support for repo names with `$` sign while using with env vars (issue5739)

navaneeth.suresh (Navaneeth Suresh) phabricator at mercurial-scm.org
Mon Jan 7 08:38:34 UTC 2019


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

REVISION SUMMARY
  `$ foo=bar hg root` fails to recognise the repo `$foo`. I stopped expanding env
  vars from vfs when there exists a repo with the same name as the env var.

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  mercurial/vfs.py
  tests/test-issue5739.t

CHANGE DETAILS

diff --git a/tests/test-issue5739.t b/tests/test-issue5739.t
new file mode 100644
--- /dev/null
+++ b/tests/test-issue5739.t
@@ -0,0 +1,8 @@
+-- going to create a repo with dollar sign which even
+works even when there exists an environment variable
+
+  $ mkdir '$foo'
+  $ cd '$foo'
+  $ hg init
+  $ foo=bar hg root
+  $TESTTMP/$foo
diff --git a/mercurial/vfs.py b/mercurial/vfs.py
--- a/mercurial/vfs.py
+++ b/mercurial/vfs.py
@@ -311,6 +311,10 @@
     '''
     def __init__(self, base, audit=True, cacheaudited=False, expandpath=False,
                  realpath=False):
+        if '$' in base and os.path.isdir(base):
+            # when there exists a repo '$foo' and an env var foo=bar, stop
+            # expanding path. refer issue5739.
+            expandpath = False
         if expandpath:
             base = util.expandpath(base)
         if realpath:



To: navaneeth.suresh, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list