我希望Mercurial在repo root和所有子目录中自动忽略所有不以'.m'结尾的文件,我无法使其工作。
这是一个虚拟仓库(没有跟踪文件):
./.hgignore
./foo/abcdef.m
./foo/abcdef.txt
./abcdef.m
./abcdef.txt
这是.hgignore:
syntax: regexp
re:.*[^m]$
这就是发生的事情:
~/src/dummy$ hg st -A
? abcdef.m
I .hgignore
I abcdef.txt
I foo/abcdef.m
I foo/abcdef.txt
也就是说,忽略了abcdef.txt和foo / abcdef.txt,但foo / abcdef.m也是如此,不应该这样。
如果我改变我的正则表达式:
syntax: regexp
re:.*[m]$
我得到了预期的结果:
~/src/dummy$ hg st -A
? .hgignore
? abcdef.txt
? foo/abcdef.txt
I abcdef.m
I foo/abcdef.m
.m文件被忽略,.txt文件不被忽略。
我做错了什么?为什么包含正则表达式(以'm'结尾)有效但不是独占正则表达式(不以'm'结尾)?
Ubuntu 14.04上的Mercurial 2.8.2。
答案 0 :(得分:1)
这是指定限制,您不能排除除以外的所有内容...您可以阅读here:
<强>限制强>
没有简单的方法可以忽略除一组文件之外的所有文件。 尝试使用反向正则表达式匹配将会失败 其他模式。这是一个故意限制,作为替代 格式都被认为太可能混淆用户 值得额外的灵活性。
@sth就在这里,你在第一次尝试时完全阻止foo
子文件夹。