2010-03-31 131 views
7

我有一个NetBeans项目,Mercurial存储库位于项目根目录中。我希望它忽略除“src”和“test”文件夹以及.hgignore本身之外的所有内容。Mercurial/.hgignore - 如何忽略文件夹中的所有内容?

我对正则表达式不熟悉,不能想出一个会做到这一点的人。

那些我试过:

(?!SRC /.*)

(测试/.*?!)

((^ hgignore?!)? !src /。| test /。 | .hgignore)

这些似乎忽略了一切,我找不出原因。

任何建议将是伟大的。

回答

7

这似乎工作:

syntax: regexp 

^(?!src|test|\.hgignore) 

这基本上是你的最后一次尝试,但:

  • 它植根于与^字符串的开始,
  • 它不需要目录名称的尾部斜线。

第二点是因为重要,因为the manual说:

例如,假设我们有一个未经跟踪文件,file.c,在我们的仓库里的A/B/file.c。如果.hgignore中的任何模式匹配/ b/file.c,a/b或a,Mercurial将忽略file.c。

所以你的模式必须不是匹配src

+0

不要忘记逃离点。 – 2010-03-31 21:01:27

+0

好抓;固定的。谢谢! – legoscia 2010-03-31 22:00:33

+0

非常感谢,伙计们!这真的有帮助,它现在就像一个魅力,我看到我错了。 – Saiki 2010-03-31 23:37:03

3
^(?!src\b|test\b|\.hgignore$).*$ 

应该工作。它匹配任何不以字srctest开头或完全由.hgignore组成的字符串。

它使用文字边界定位点\b来确保像testtube.txtsrcontrol.txt这样的文件不会意外匹配。但是,它将在像src.txt之类的文件上出现“失火”,其中除了斜线之前还有一个字边界。

+0

这怎么可以改变,以便只有某些子目录不被忽略?例如app/design/frontend/rc – 2011-07-14 11:14:19

相关问题