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

8
我有一个NetBeans项目,Mercurial存储库在项目根目录中。我希望它忽略除“src”和“test”文件夹以及.hgignore本身之外的所有内容。
我不熟悉正则表达式,无法想出一个可以实现这一点的表达式。
我尝试过以下表达式:
(?!src/.*)
(?!test/.*)
(?!^.hgignore)
(?!src/.|test/.|.hgignore)
这些似乎会忽略所有内容,我无法弄清楚为什么。
任何建议都将是很好的。
2个回答

8

这个看起来是可以的:

syntax: regexp

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

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

  • 它以 ^ 开始字符串,并且
  • 它不需要目录名称的尾随斜线。

第二点很重要,因为正如手册所说:

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

所以您的模式必须 匹配 src


不要忘记转义点号。 - Tim Pietzcker
1
非常感谢,大家!那真的帮了我很多,现在它像魔法一样工作了,我也知道我哪里出错了。 - Saiki

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

应该可以工作。它匹配任何不以单词“src”或“test”开头,或完全由“.hgignore”组成的字符串。
为了确保不会意外匹配像“testtube.txt”或“srcontrol.txt”这样的文件,它使用单词边界锚定符“\b”。然而,在存在除斜杠之前的单词边界的文件(如“src.txt”)上,它将“误射”。

如何更改以便只有某些子目录不被忽略?例如:app/design/frontend/rc - David Oliver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接