为什么我的正则表达式无法在Mercurial的.hgignore中获取我想要的文件?

时间:2011-07-22 20:31:01

标签: regex mercurial hgignore

我一直在寻找我的.hgignore文件的正则表达式,并在SO上找到了几个非常有用的答案(比如this)并提出了一个regexp我认为应该可以排除所有文件和目录,但在负向前瞻中列出的目录除外。

^(?!(certs/|config/|\.hgignore)).+

它似乎适用于RegExr,并遵循其他SO答案中的模式,但如果我hg status显示的唯一文件是.hgignore本身; Mercurial可以看到certsconfig中的任何内容。 (如果删除.hgignore,肯定会出现文件。)

我在这里遇到了什么问题?

2 个答案:

答案 0 :(得分:2)

白名单并不容易,因为它们很少需要。添加文件后,它会被跟踪,而.hgignore文件根本不会影响它。这不适用于目录(目录不在Mercurial或git中跟踪),但它确实处理像.hgignore这样的文件。因此,只需将其完全添加一次,即使您尝试使用白名单,也可以将其省略。

如果您真的想要忽略大部分内容,请使用此.hgignore文件:

.*

然后在创建新文件时添加cert和配置文件(只是在一个肢体上,但不会倾向于添加新的证书并经常配置文件版本)。一旦添加它们,它们将被跟踪,并且它们的更改将在hg status中显示为已经修改过。

答案 1 :(得分:0)

只是一个猜测。您使用的是@“文字字符串”还是“常规字符串”您可能需要将其设置为\\