使用负向前瞻性修改.hgignore文件

时间:2012-01-25 01:45:54

标签: regex mercurial hgignore

我看了一些其他的Hg hgignore文件问题,但我还没能让我的正则表达式工作。

想象一下这些文件:

Projects/search.intrasearch/newUI/override/xslt/foo.xsl
Projects/search.intrasearch/newUI/default/
Projects/search.intrasearch/oldUI/baz/

我想忽略后两行,但不是第一行。所以,在Mercurial中,我想在newUI / override目录中包含文件,它是孩子们,但就是这样。在真实系统中,有比上面更多的目录,所以简单地排除oldUI和默认将不起作用。我需要一种包含的方法。

这适用于正则表达式工具,但不适用于Mercurial:

(?i)Projects/search\.intrasearch/(?!newUI/override).*

1 个答案:

答案 0 :(得分:2)

我终于通过使用两个正则表达式的组合来解决这个问题:

(?i)Projects/search.*?/newUI/(?!override).*
(?i)Projects/search[^/]*/(?!newUI).*

这似乎成功地排除了任何与newUI有兄弟情谊的东西以及任何要覆盖的兄弟姐妹。