1

在一个巨大的源代码树中,我希望 Mercurial 只跟踪一个子文件夹。

specific/component/subfolder

在任何像样的正则表达式工具(Regex Coach,regexpal.com)中,以下内容绝对足够(并且可以理解)

^(?!specific/component/subfolder).+

同时 .hgignore 坚持

^(?!extras).+
^extras/(?!extensions).+
^extras/extensions/(?!sharing).+

一旦我将斜线放在前瞻组中,就什么都没有通过。

在称这是一个错误(也许是另一个本土的正则表达式解析器?)之前,我问了集体智能:-)

关于 hgignore 想要做什么的间接线索的学分

使用负前瞻来磨练 .hgignore 文件

4

1 回答 1

5

只是不要在 .hgignore 中使用负前瞻。真的。每次有人在 Stack Overflow 中建议它时,我都会让他们知道它不能很好地工作,因为它不是预期的功能。如果 Mercurial 的 .hgignore 文件应该是一个白名单系统,它就会有一个真正的白名单语法。这是一个黑名单,应该这样使用。

负前瞻语法几乎可以正常工作,因为它不是一个本土的正则表达式解析器——它是内置在 python 中的,并且不妨碍禁用负前瞻似乎有点矫枉过正,但也许是更好的选择。

两种解决方案比使用永远不会满足您的负面展望处理更好:

  • 只需将存储库向下移动一级 - 向下移动到您实际要跟踪的文件夹中
  • - 或 - 将所有内容列入黑名单,然后“添加”您想要跟踪的文件 - 添加覆盖忽略

严重地。这不是一个预期的功能,它永远不会很好地工作,但由于向后兼容性的原因不能被删除。

于 2012-05-03T15:53:40.990 回答