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

Xia*_*ian 149 version-control mercurial hgignore

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

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

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

Ry4*_*ase 172

交替:

syntax: glob
bin/**
Run Code Online (Sandbox Code Playgroud)

  • `bin``bin /``bin/*``bin/**` - 所有对glob都做同样的事情,即忽略所有名为bin的目录和子目录,但不是任何文件名bin.txt或bin1.asterix有什么意义? (6认同)

Phi*_*Lho 53

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

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

所以:

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


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

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


Der*_*ger 9

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

^/bin/
Run Code Online (Sandbox Code Playgroud)

对于binroot下面的目录,可以省略^.无需指定语法,regexp是默认语法.

  • 这不会忽略任何事情.插入符只表示repo root中的内容,但是前导斜杠只捕获了repo根目录中的dirs. (4认同)