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

时间:2011-09-05 02:42:16

标签: visual-studio mercurial

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

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

我该如何阻止它?

由于

2 个答案:

答案 0 :(得分:6)

我在我的一个项目上尝试了这个,sln文件被视为文本文件。检查您的sln文件是否采用不同的编码,如UTF-16。否则,Hg不应该将其视为二进制。尝试明确地将编码转换/更改为UTF-8 / ASCII并查看。

答案 1 :(得分:2)

对于实际存储,Mercurial会将所有文件视为二进制文件。它永远不会进行行转换或其他任何需要将事物视为文本或知道文件编码的内容。

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

所以你的.sln文件必须在其中的某个地方有一个0x00。最常见的原因是行为不端的编辑将字节顺序标记(BOM)放在文件的前面。

如果你可以删除NUL Mercurial会显示文件内容,如果你不能,我认为你运气不好。