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