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


149

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

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

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

Answers:


173

交替:

syntax: glob
bin/**

我认为这更容易:)
西安

PhiLho,我认为这也将筛选出的文件名为Bin
彼得·吉布森

1
这个答案加上这份文档对我有所
CenterOrbit 2012年

7
bin bin/ bin/* bin/**-所有操作都与glob相同,即忽略所有名为bin的目录和子目录,但不忽略任何文件名bin.txt或bin1。asterix的意义是什么?
用户

我很清楚,但如果您已将全局规则内部化,则肯定要使用“ bin”(我是个re家伙)
Ry4an Brase 2013年

53

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

因此,例如,如果您的存储库位于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)页面有点简洁。


我使用了模式“ [Dd] ebug * /”,奇怪的是,它还过滤了“ debug.txt”之类的文件
Mehrdad Mirreza

9

两者都将过滤出一个名为的目录cabin,该目录可能不是您想要的。如果要过滤顶级域名,则可以使用:

^/bin/

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


4
这不会忽略任何东西。插入符号仅表示回购根目录中的内容,而前导斜线仅捕获不在回购根目录中的目录。
Ry4an Brase

2

没关系,我明白了

syntax: regexp
bin\\*

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


2
确实,您的表达式的意思是“以bin结尾并带有0或多个反斜杠的文件或文件夹” ...因此它可以工作,因为反斜杠被*取消,但是它适用于任何带有“ bin”的东西。在Windows上,hg在匹配之前用/替换\。
PhiLho

2

语法:glob bin / **

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

汞模式


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.