hg:如何排除“* .xll”文件而不是xll目录

时间:2013-05-23 20:11:35

标签: regex mercurial hgignore

在我的.hgignore文件中,我试图忽略所有生成的xll文件。我(不幸的是)在存储库的域中有一个名为“xll”的目录,而我 not 想要忽略该目录本身。

我试过了:

syntax: regex
\.xll$

我认为应该是“匹配所有以'.xll'结尾的内容” 和

syntax: regex
*.\.xll$

我认为这应该意味着“匹配所有至少有一个任意字符,然后是'.xll'”。

使用上述任一方法,目录不会被忽略(yay),但也不是文件foobar.xll(darn)。如果我使用带有正则表达式的“xll”,或带有glob的“* .xll”,两者,则忽略目录和文件。

这是在Linux(Ubuntu 10.04.4)中使用hg 2.6(TortoiseHG 2.8)(我通过“X”图标的存在或不存在来观察Nautilus中的效果)。

提前致谢!

EDIT (在这里添加评论,因为它们太长而无法放入评论......) 感谢所有的回复。事实证明我误解了一些事情。所以: - 因为我使用了“正则表达式”而不是“regexp”(并且我在文件顶部有“glob”),无论我在“xll”引用的行上放置的是“glob”,所以该行确实有一种效果(这使我错误地认为“语法:正则表达式”行正在做我认为的那样 - 巧合的是,我的“xll”目录中的所有文件都被.hgignore中的其他行过滤掉了(因为它们应该已经过滤),而不是“* .xll”行 - 因此,在Nautilus中,xll目录被标记为“被忽略”,不是因为过滤器忽略了整个目录,而是因为其他过滤器正在过滤该目录中的所有文件

底线,我在“syntax:glob”下的* .xll实际上是根据需要精确过滤掉文件。 Nautilus的反馈与我预期的不同。

2 个答案:

答案 0 :(得分:2)

它是.*\.xll$,而不是*.\.xll$

答案 1 :(得分:1)

使用glob语法对我很有用:

syntax: glob
*.xll

当我使用未跟踪的文件创建名为xll的目录时,我仍然会在hg status的输出中看到该文件:

$ mkdir xll
$ touch a.xll x.txt xll/b.xll xll/y.txt
$ echo 'syntax: glob\n*.xll' > .hgignore
$ hg status
? .hgignore
? x.txt
? xll/y.txt

\.xll$syntax: regexp一起使用对我来说也很有用。

相关问题