2012-07-03 55 views
3

我有一个RE检查器,说这应该工作。我究竟做错了什么?!?Mercurial .hgignore沮丧

的什么,我试图忽视

例子:

apps/cms/templates/cms/test_bup_DEPRECATED/widgets/page_link.html 

我的.hgignore文件:

syntax: regexp 
^static 
.*_DEPRECATED.* 

我已经尝试了各种东西,并没有成功:(

另一个尝试失败:

syntax: glob 
_DEPRECATED/* 

更新: 我编辑的.hgignore文件是:

syntax: glob 
**_DEPRECATED/** 

但汞ST还在做这样的:

$ hg st | grep DEPR 
A apps/cms/templates/cms/test_DEPRECATED/base.html 

此相同的结果:

syntax: glob 
_DEPRECATED 
+0

回答:首先确保文件未被跟踪 - hg忘记

; hg com -m'Grr'然后添加glob * _DEPRECATED(或仅为dirs添加尾部斜杠) –

+0

不能,如果您希望尾部斜杠正常工作,请使用正则表达式。 –

+0

再次感谢马克:) –

回答

8

首先,.hgignore不会忽略已经被水银跟踪文件。您的示例表明该文件已被跟踪:

$ hg st | grep DEPR 
A apps/cms/templates/cms/test_DEPRECATED/base.html 

该文件已被添加,但未提交。使用hg forget忘记该文件,然后忽略模式将生效。

.hgignore模式匹配路径的任何部分,所以这是所有你需要:

syntax: regexp 
_DEPRECATED/ 

注意您可能要对目录结尾的斜线,否则将匹配_DEPRECATED以及结尾的文件,否则降它。

要解决忽略模式,TortoiseHg中的忽略GUI(thg ignore)非常有帮助。它显示所有未被跟踪且未被忽略的文件,并且可以输入模式直到忽略正确的文件。

+0

谢谢,忘记了这些文件并提交了,但glob必须是这样的:* _DEPRECATED /不是 _DEPRECATED /这没有工作:) –

+0

正则表达式不需要*,glob可以。我使用上面的正则表达式。此外,glob仍然会阻止以DEPRECATED结尾的文件,即使是/添加也是如此,如果这对您很重要。做出明智的选择 :) –

0

我认为这*是你的正则表达式中的*字符。我认为因为*表示0或更多,那么正则表达式会匹配字符串的位置0,忽略每个文件,hgignore将其解释为一个错误,将表达式置零。

我只会使用“_DEPRECATED”(不带引号),因为这将匹配字符串的字符31。我选择了这个子集,因为它看起来像是试图忽略其中包含字符串_DEPRECATED的任何文件。如果这不符合你的要求,请告诉我,我会试着想出一个可以使用的不同的正则表达式。

另外,你是否试图忽略任何以字符“静态”开头的文件,因为这是其他行看起来像它正在做的。

另外,还有一种可以使用的glob语法,它比正则表达式更直接。您可以使用语法来轻松忽略整个目录。我不知道你是如何布置你的项目的,但是如果忽略整个目录来实现你的目标,这是一个简单的方法。

更多的文档是在这里:http://www.selenic.com/mercurial/hgignore.5.html

+0

谢谢,但仍然无法实现它。见上面的更新。 –

+0

怎么样“语法:regexp”,然后下一行,“_DEPRECATED” –

1

正确的答案:

syntax: glob 
**_DEPRECATED/** 

例子:

$ cat .hgignore 
syntax: glob 
**_DEPRECATED/** 
$ find . | fgrep -v /.hg/ 
. 
./.hgignore 
./apps 
./apps/cms 
./apps/cms/templates 
./apps/cms/templates/cms 
./apps/cms/templates/cms/file 
./apps/cms/templates/cms/test_bup_DEPRECATED 
./apps/cms/templates/cms/test_bup_DEPRECATED/widgets 
./apps/cms/templates/cms/test_bup_DEPRECATED/widgets/page_link.html 
$ hg st 
? apps/cms/templates/cms/file 
+0

谢谢,但仍然无法实现它。见上面的更新。 –

+0

但你添加了文件到mercurial!当然它会显示它! 'A apps/cms/templates/cms/test_DEPRECATED/base.html' –

+0

感谢这项工作(一旦文件未被跟踪 - 请参阅上面的Mark的回答) –