如何忽略Mercurial中文件夹下的所有内容

时间:2008-10-31 15:55:26

标签: version-control mercurial hgignore

我正在寻找.hgignore文件的表达式,忽略指定文件夹下的所有文件。

例如:我想忽略bin

下面的所有文件和文件夹

实际上关于如何形成表达式的任何建议都会很棒

6 个答案:

答案 0 :(得分:166)

可替换地:

syntax: glob
bin/**

答案 1 :(得分:50)

我做了一些实验,发现Windows上的正则表达式语法适用于从当前存储库开始的路径,反斜杠转换为斜杠。

因此,如果您的存储库位于E:\ Dev中,hg status将对foo / bar / file1.c等应用模式。锚点适用于此路径。

所以:

  • Glob适用于路径元素,并且根植于元素部分
  • foo匹配任何名为foo的文件夹(或文件)(不是“foobar”或“barfoo”)
  • * foo *匹配名称为“foo”的任何文件夹或文件
  • foo / bar *匹配“foo”文件夹中以“bar”开头的所有文件


  • 正则表达式区分大小写,而非锚定
  • 当然,反斜杠正则表达式的特殊字符就像。 (点)
  • /匹配Windows上的\ path分隔符。 \与此分隔符不匹配...
  • foo将所有文件和文件夹与
  • 中的“foo”匹配
  • foo /仅匹配以“foo”结尾的文件夹
  • / foo /匹配路径中某处的文件夹“foo”
  • / foo / bar /匹配路径中某处“foo”文件夹中的“bar”文件夹
  • ^ foo匹配在存储库根目录下以foo开头的文件或文件夹
  • foo $匹配以foo结尾的文件

我希望这会有所帮助,我发现HGIGNORE(5)页面有点简洁。

答案 2 :(得分:8)

这两个也会过滤掉一个名为cabin的目录,这可能不是你想要的。如果您要过滤顶级,则可以使用:

^/bin/

对于根目录下的bin目录,您可以省略^。无需指定语法,regexp是默认语法。

答案 3 :(得分:2)

没关系,我明白了

syntax: regexp
bin\\*

表达式遵循标准的perl正则表达式语法。

答案 4 :(得分:0)

语法:glob 箱/ **

上面显示了这个答案,但是我还想补充说*和**的处理方式不同。 **是递归的,*不是。

请参阅Hg Patterns

答案 5 :(得分:-1)

忽略.class文件

syntax: regexp
?\.class