con*_*att 10 regex unicode version-control mercurial hgignore
我的.hgignore
文件中有以下内容:
syntax: glob
obj/*
bin/*
*.suo
*.user
*.ncb
Run Code Online (Sandbox Code Playgroud)
如果我注释掉*.
过滤器,过滤可以很好地过滤掉bin
和obj
文件夹中的文件,但是,如果我保留这些过滤器,我会收到以下错误:
abort: c:\temp\.hgignore: invalid pattern (relre): *.suo
Run Code Online (Sandbox Code Playgroud)
注意:该文件以UTF-8编码
Mar*_*ler 11
Mercurial的错误消息告诉我们Mercurial syntax: glob
不会读取您的行.忽略文件中的模式默认为正则表达式,并且*.suo
确实是无效的正则表达式(正则表达式无法启动*
).
由于这是在Windows上,并且由于文件是UTF-8编码的,因此唯一合理的解释是有一些东西使得Mercurial忽略该syntax: glob
行.一个UTF-8 BOM是这样的"东西"!字节顺序标记是插入UTF-16编码文件的小签名,用于指示文件的字节顺序.对于UTF-8编码文件,不需要或建议这样做,但Windows编辑器仍然倾向于插入它们.
要解决此问题,请在记事本中打开该文件,然后选择"另存为".然后选择ANSI作为编码.您的.hgignore
文件是纯ASCII,因此这与没有BOM的UTF-8有效.