在一个巨大的源代码树中,我希望Mercurial只跟踪一个子文件夹。
specific/component/subfolder
在任何体面的正则表达式工具(Regex Coach,regexpal.com)中,以下内容绝对足够(并且可以理解)
^(?!specific/component/subfolder).+
同时.hgignore坚持要
^(?!extras).+
^extras/(?!extensions).+
^extras/extensions/(?!sharing).+
一旦我把斜线放在前瞻组中,没有任何东西可以通过。
在称这个错误之前(也许是另一个本土的正则表达式解析器?)我问集体智慧: - )
关于hgignore想要什么的间接线索的信用去
答案 0 :(得分:5)
请不要在.hgignore中使用负向前瞻。真。每当有人在Stack Overflow中有人提出建议时,我都会告诉他们它不能很好地工作,因为它不是预期的功能。如果Mercurial的.hgignore文件应该是白名单系统,那么它将具有真正的白名单语法。这是一个黑名单,应该这样使用。
负向前瞻语法几乎可以正常工作,因为它不是一个自行开发的正则表达式解析器 - 它是内置于python中的一个,并且禁用负面前瞻看起来像是矫枉过正,但也许是更好的选择。
两种解决方案比使用永远不会令人满意的负面展望处理更好:
严重。这不是预期的功能,它永远不会运行良好,但由于向后兼容性原因无法删除。