Hg Regexp语法不能按预期工作

时间:2011-10-12 22:02:58

标签: regex mercurial hgignore

这是我的文件/文件夹结构:

代码/ .hg

代码/ .hgignore

代码/ CASH / README.TXT

代码/ CASH / bin中/ FTI / abc.dll

我正在尝试在我的.hgignore文件中创建一个正则表达式,它将忽略CASH文件夹下的所有内容,除了/ bin / FTI文件夹中的所有内容。

这是我的.hgignore文件不起作用:

syntax: regexp
CASH/(?!bin/FTI/).*

这最终会忽略CASH文件夹中的所有内容,包括我不想忽略的/bin/abc.dll文件。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这不是你正在寻找的答案,但Mercurial在.hgignore文件中没有“除了”之外的正确语法的原因(零宽度预测正则表达式不是计划)是因为hg add会覆盖.hgignore

您可以在其中添加.hgignore个文件:

^CASH/

然后执行一次hg add CASH/bin/FTI/**,您将跟踪该目录中已存在的所有文件的所有未来更改。

当然,如果在CASH / bin / FTI中显示新的二进制文件,您将不得不记住添加它,但对已添加的二进制文件的更改将不需要任何额外的操作。除非经常出现具有新名称的二进制文件,否则这是更常见的设置。

答案 1 :(得分:0)

在这种情况下,

glob可能更容易。如果使用正则表达式,那么:

syntax: regexp
CASH/(?!bin)
CASH/bin/(?!FTI)