2010-03-31 133 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

相關問題