Mercurial .hgignore沮丧
我有一个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
首先,.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
)非常有帮助。它显示所有未被跟踪且未被忽略的文件,并且可以输入模式直到忽略正确的文件。
谢谢,忘记了这些文件并提交了,但glob必须是这样的:* _DEPRECATED /不是 _DEPRECATED /这没有工作:) –
正则表达式不需要*,glob可以。我使用上面的正则表达式。此外,glob仍然会阻止以DEPRECATED结尾的文件,即使是/添加也是如此,如果这对您很重要。做出明智的选择 :) –
我认为这*是你的正则表达式中的*字符。我认为因为*表示0或更多,那么正则表达式会匹配字符串的位置0,忽略每个文件,hgignore将其解释为一个错误,将表达式置零。
我只会使用“_DEPRECATED”(不带引号),因为这将匹配字符串的字符31。我选择了这个子集,因为它看起来像是试图忽略其中包含字符串_DEPRECATED的任何文件。如果这不符合你的要求,请告诉我,我会试着想出一个可以使用的不同的正则表达式。
另外,你是否试图忽略任何以字符“静态”开头的文件,因为这是其他行看起来像它正在做的。
另外,还有一种可以使用的glob语法,它比正则表达式更直接。您可以使用语法来轻松忽略整个目录。我不知道你是如何布置你的项目的,但是如果忽略整个目录来实现你的目标,这是一个简单的方法。
谢谢,但仍然无法实现它。见上面的更新。 –
怎么样“语法:regexp”,然后下一行,“_DEPRECATED” –
正确的答案:
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
谢谢,但仍然无法实现它。见上面的更新。 –
但你添加了文件到mercurial!当然它会显示它! 'A apps/cms/templates/cms/test_DEPRECATED/base.html' –
感谢这项工作(一旦文件未被跟踪 - 请参阅上面的Mark的回答) –
回答:首先确保文件未被跟踪 - hg忘记
不能,如果您希望尾部斜杠正常工作,请使用正则表达式。 –
再次感谢马克:) –