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

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

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

其实任何关于如何形成表情的build议都会很棒

交替:

syntax: glob bin/** 

我做了一些实验,发现Windows上的正则expression式适用于从当前版本库开始的path,反斜杠被转换为斜线。

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

所以:

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

  • 正则expression式区分大小写,而不是锚定
  • 当然,反斜杠的特殊字符就好比。 (点)
  • Windows上的/ matches \ path分隔符。 \不匹配这个分隔符…
  • foo与“foo”中的所有文件和文件夹相匹配
  • foo /只匹配以“foo”结尾的文件夹
  • / foo /与path中某处的文件夹“foo”匹配
  • / foo / bar /与path中某处文件夹“foo”中的文件夹“bar”匹配
  • ^ foo匹配存储库根目录下由foo开始的文件或文件夹
  • foo $匹配以foo结尾的文件

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

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

 ^/bin/ 

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

没关系,我明白了

 syntax: regexp bin\\* 

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

忽略.class文件

 syntax: regexp ?\.class 

语法:glob bin / **

这个答案如上所示,但是我也想补充说*和**的处理方式是不同的。 **是recursion的,*不是。

看到Hg模式