153

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

例如:我想忽略 bin 下的所有文件和文件夹

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

4

6 回答 6

178

交替:

syntax: glob
bin/**
于 2008-10-31T22:05:03.483 回答
55

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

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

所以:

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


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

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

于 2008-12-06T12:43:24.407 回答
10

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

^/bin/

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

于 2008-10-31T22:19:31.893 回答
3

语法:glob bin/**

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

汞模式

于 2016-11-14T22:08:07.480 回答
2

没关系,我明白了

syntax: regexp
bin\\*

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

于 2008-10-31T16:09:45.447 回答
-2

忽略 .class 文件

syntax: regexp
?\.class
于 2008-11-21T19:53:28.540 回答