Mercurial / .hgignore - 如何忽略除文件夹内容之外的所有内容?

时间:2010-03-31 20:31:02

标签: regex file mercurial directory ignore

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

我不熟悉正则表达式,也无法想出那样做。

我试过的那些:

(?SRC /.*)

(?测试/.*)

(?!^。hgignore)

(?SRC / |。测试/. | .hgignore)

这些似乎忽略了一切,我无法弄清楚原因。

任何建议都会很棒。

2 个答案:

答案 0 :(得分:7)

这似乎有效:

syntax: regexp

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

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

  • 它的根源是^
  • 的字符串的开头
  • 目录名称不需要斜杠。

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

  

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

因此,您的模式必须匹配src

答案 1 :(得分:3)

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

应该有效。它匹配任何不以单词srctest开头的字符串,或完全由.hgignore组成。

它使用单词边界锚\b来确保testtube.txtsrcontrol.txt等文件不会意外匹配。但是,它会像src.txt这样的文件“失火”,其中除了斜杠之外还有一个单词边界。