我的.hgignore
文件中有以下内容:
syntax: glob
obj/*
bin/*
*.suo
*.user
*.ncb
如果我注释掉*.
过滤器,则过滤可以很好地过滤掉bin
和obj
文件夹中的文件,但是,如果我保留这些过滤器,我会收到以下内容:错误:
abort: c:\temp\.hgignore: invalid pattern (relre): *.suo
注意:文件采用UTF-8编码
答案 0 :(得分: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有效。
答案 1 :(得分:3)
要忽略完整的bin
和obj
文件夹,您不需要背后的/*
。
Visual Studio项目的默认.hgignore
文件如下所示:
syntax: glob
bin
obj
*.suo
*.user
答案 2 :(得分:1)