为什么Mercurial(hg)把我的Visual Studio解决方案(.sln)视为二进制文件?

3

我收到了信息“文件或差异未显示:该文件是二进制文件。”

为什么mercurial(hg)将我的Visual Studio解决方案(.sln)视为二进制文件?

我该如何停止它?

谢谢。

2个回答

6

我在我的一个项目上尝试了这个方法,sln 文件被视为文本文件。请检查一下你的sln文件是否使用了不同的编码方式,如UTF-16。否则,Hg不应该将其视为二进制文件。尝试显式地将编码转换/更改为UTF-8 / ASCII。


2

实际存储时,Mercurial将所有文件视为二进制文件。它从不进行行转换或其他需要将东西视为文本或知道文件编码的操作。

然而,在UI级别上(与存储级别分离),它会尝试避免在屏幕上显示二进制字符,并为此使用一个简单的测试--如果一个文件中有一个或多个NUL(0x00)字符,则该文件不会在差异中显示。

因此,您的.sln文件必须在其中某个位置具有0x00。最常见的原因是行为不当的编辑器在文件前面放置字节顺序标记(BOM)。

如果您可以删除NUL,则Mercurial将显示文件内容,如果不能,则我认为您就没有办法了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接