【发布时间】:2009-07-03 13:22:55
【问题描述】:
我有一个匹配一组文件名的 Python 正则表达式。如何更改它以便我可以在 Mercurial 的 .hgignore 文件中使用它来忽略 不 匹配表达式的文件?
全文:
我有一个很大的源代码树,其中散布着*.ml 文件。我想把它们放到一个新的存储库中。还有其他不太重要的文件太重而无法包含在存储库中。我正在尝试查找.hgignore 文件的对应表达式。
第一个观察:Python 没有常规语言补码运算符(AFAIK 它只能补码一组字符)。 (顺便说一句,为什么?)
第二次观察: Python 中的以下正则表达式:
re.compile("^.*(?<!\.ml)$")
按预期工作:
abcabc - match
abc.ml - no match
x/abcabc - match
x/abc.ml - no match
但是,当我在 .hgignore 文件中放入完全相同的表达式时,我得到了:
$ hg st --all
? abc.ml
I .hgignore
I abcabc
I x/xabc
I x/xabc.ml
根据.hgignore 手册页,Mercurial 只使用普通的 Python 正则表达式。那我怎么会得到不同的结果呢?
Mercurial 怎么可能找到x/xabc.ml 的匹配项?
有没有人知道缺少常规语言补码运算符的丑陋方法?
【问题讨论】:
-
你应该去订阅这个错误报告:mercurial.selenic.com/bts/issue712