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

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

我想忽略所有文件和文件夹下面的行

实际上,任何关于表达式如何构成的建议都是很好的

69512 次浏览

算了,我来吧

syntax: regexp
bin\\*

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

或者:

syntax: glob
bin/**

这两种方法都会过滤掉一个名为 cabin的目录,这可能不是您想要的。如果你正在过滤顶层,你可以使用:

^/bin/

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

忽略.class 文件

syntax: regexp
?\.class

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

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

所以:

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


  • 正则表达式是区分大小写的,而不是锚定的
  • 当然,反斜杠 regex 特殊字符如. (点)
  • /匹配 Windows 上的路径分隔符。与此分隔符不匹配..。
  • Foo 匹配所有包含“ foo”的文件和文件夹
  • Foo/只匹配以“ foo”结尾的文件夹
  • /foo/匹配路径中某处的文件夹“ foo”
  • /foo/bar/匹配路径中“ foo”文件夹中的文件夹“ bar”
  • ^ foo 匹配从存储库根目录处的 foo 开始的文件或文件夹
  • Foo $匹配以 foo 结尾的文件

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

语法: globb 垃圾箱/* *

这个问题的答案如上所示,不过我还想补充一点: * 和 * * 的处理方式是不同的。* 是递归的 * 不是。

参见 汞排放模式