在一个巨大的源码树中,我希望Mercurial只跟踪一个子文件夹。
specific/component/subfolder在任何像样的正则表达式工具(Regex Coach、regexpal.com)中,以下内容是绝对足够的(并且可以理解)
^(?!specific/component/subfolder).+与此同时,.hgignore坚持让
^(?!extras).+
^extras/(?!extensions).+
^extras/extensions/(?!sharing).+一旦我把斜杠放到lookahead组中,什么都不能通过。
在说这是一个bug之前(也许是另一个自主开发的regex解析器?)我问集体智慧:-)
关于hgignore到底想要什么的间接线索的信用
发布于 2012-05-03 23:53:41
只是不要在.hgignore中使用负向先行。真的。每次有人在Stack Overflow中建议它时,我都会插话,让他们知道它不能很好地工作,因为它不是一个预期的功能。如果Mercurial的.hgignore文件被认为是一个白名单系统,那么它就会有一个真正的白名单语法。这是一个黑名单,应该这样使用。
负向先行语法几乎是有效的,因为它不是自家开发的正则表达式解析器--它是内置在python中的语法,并且不遗余力地禁用负向先行语法看起来有点过分,但也许是更好的选择。
比使用永远不会让你满意的负面展望处理更好的两个解决方案:
‘您想要跟踪的文件-- add
我是认真的。这不是一个预期的功能,它永远不会很好地工作,但由于向后兼容性的原因不能删除。
https://stackoverflow.com/questions/10433342
复制相似问题