2008-11-21 166 views
31

警告: 我尝试此处列出的所有可能性:How can I ignore everything under a folder in Mercurial
没有用,因为我希望。忽略mercurial中的文件夹

我想忽略文件夹test下的所有东西。但不能忽视srcProject\test\TestManager

我尝试

syntax: glob 
test/** 

而忽略testsrcProject\test\TestManager

有了:

syntax: regexp 
^/test/ 

这是同样的事情。

另外:

syntax: regexp 
test\\* 

我有安装TortoiseHG 0.4rc2水银,626cb86a6523 + tortoisehg,Python的2.5.1,PyGTK的-2.10.6,GTK-2.10.11在Windows

回答

44

尝试没有在正规表达式版本插入符后斜线。

^test/ 

这是一个测试:

~$ mkdir hg-folder-ignore 
~$ cd hg-folder-ignore 
~/hg-folder-ignore$ echo '^test/' > .hgignore 
~/hg-folder-ignore$ hg init 
~/hg-folder-ignore$ mkdir test 
~/hg-folder-ignore$ touch test/ignoreme 
~/hg-folder-ignore$ mkdir -p srcProject/test/TestManager 
~/hg-folder-ignore$ touch srcProject/test/TestManager/dont-ignore 
~/hg-folder-ignore$ hg stat 
? .hgignore 
? srcProject/test/TestManager/dont-ignore 

注意ignoreme没有显示出来并且不要-忽略的是。

+0

@JaKXz是的,这适用于所有版本的Mercurial。你在`.hgignore`中得到的东西没有经过。确保你的忽略文件被解释为一个正则表达式而不是一个glob,并且不要忽视忽略你已经添加了`hg add`ed的文件。忽略只影响未添加文件的列表/处理方式。 – 2013-07-16 13:51:33

4

您可以使用零宽度负前瞻和查找背后的断言来指定要忽略test只有当它不是由srcProject前面而不是后面TestManager

syntax: regexp 
(?<!srcProject\\)test\\(?!TestManager) 

水银使用Python正则表达式,所以你可以找到在Python文档零宽度断言的详细信息:https://docs.python.org/library/re.html#regular-expression-syntax

+1

凉爽的bin目录和所有* .DS_Store文件技术,但在这种情况下完全矫枉过正 – 2010-01-27 15:25:06

+0

比解决一个简单问题需要更复杂的方法。 Ry4an的解决方案以更简单的方式实现了同样的功能。 – 2010-03-04 02:52:19

3

这两种情况都为我工作(在Linux和Windows):

syntax: regexp 
^backup/  #root folder 
nbproject/ #any folder 

syntax: glob 
./backup/* #root folder 
nbproject/* #any folder 

然而,这是不是之前我添加了一个链接到.hgignore文件.hgrc文件在我的回购:

[ui] 
ignore = .hg/.hgignore 

另外值得一提的是,善变忽略的文件,这是不目前正在跟踪,这些是在您将其配置为忽略它们之前添加的。所以,不要被hg状态拖延,说一些文件是M(修改)或! (丢失)在您刚添加到忽略列表的文件夹中!

0

创建存储库

现在在文件中添加如下内容的根目录下.hgignore文件。

语法:glob的

斌/ **

* .DS_Store

这将删除从仓库