我正在尝试在名称中包含美元符号的目录中创建一个mercurial存储库。这是我在windows 10 cmd.exe上使用mercurial 4.1.3获得的等效简化示例:
C:\test\dir1>hg init
C:\test\dir1>hg status
C:\test\dir1>cd ../dir$$1
C:\test\dir$$1>hg init
C:\test\dir$$1>hg status
abort: repository C:\test\dir$$1 not found!
所以我希望这很清楚,唯一的区别似乎是第二个目录名中的美元符号。提前谢谢!
答案 0 :(得分:1)
Mercurial似乎将美元符号视为环境变量逃逸:
C:\test>set X=abc
C:\test>echo $X # Not the shell expanding it, that would be %X%.
$X
C:\test>hg init $X
C:\test>dir
Volume in drive C has no label.
Volume Serial Number is CE8B-D448
Directory of C:\test
11/10/2017 09:27 PM <DIR> .
11/10/2017 09:27 PM <DIR> ..
11/10/2017 09:27 PM <DIR> abc
0 File(s) 0 bytes
3 Dir(s) 53,899,231,232 bytes free
Mercurial已将$X
扩展为环境变量。也:
C:\test>hg init dir$$x
C:\test>dir
Volume in drive C has no label.
Volume Serial Number is CE8B-D448
Directory of C:\test
11/10/2017 09:30 PM <DIR> .
11/10/2017 09:30 PM <DIR> ..
11/10/2017 09:30 PM <DIR> dir$x
0 File(s) 0 bytes
3 Dir(s) 53,899,091,968 bytes free
两个美元符号插入一美元符号。当您位于名为dir$$x
的目录中时,Mercurial正在使用dir$x
作为名称。我找到了hg -R. status
的解决方法,但最好避免使用美元符号。
答案 1 :(得分:0)
这已作为Mercurial错误输入:https://bz.mercurial-scm.org/show_bug.cgi?id=5739