【问题标题】:How do I tell TortoiseHg that a file is not binary?如何告诉 TortoiseHg 文件不是二进制文件?
【发布时间】:2011-08-10 04:17:02
【问题描述】:

最近有人向我们的 Mercurial 存储库添加了 PowerShell (.ps1) 脚本。该文件是纯文本文件,但 TortoiseHg 似乎认为它是二进制文件并显示一条消息:“未显示文件或差异:文件是二进制文件”。

如何告诉 TortoiseHg ps1 文件是文本文件而不是二进制文件。我使用的是 TortoiseHg 2.0.3 版本

【问题讨论】:

  • 我很想看到一个不依赖于更改文件编码的答案。我们跟踪一个我们无法更改的商业工具的项目文件,并将文件保存在 UCS-2 中; TortoiseHg 声称这些文件是二进制文件,并选择不显示差异。
  • @ChrisPhillips - 如果您能找到|write 用于无人值守重新编码文件的工具,您可以(尝试)对这些文件使用encode|decode tricks

标签: diff tortoisehg binaryfiles


【解决方案1】:

文件采用 UCS-2 编码,我使用 notepad++ 将其转换为 UTF-8。

现在完成了,mercurial 似乎将文件识别为文本并正确执行差异。

是时候再次read这个了!

this 可能也值得一看,因为 UCS-2 似乎与 UTF-16 密切相关。根据该链接,它已经超越了它,但从 2000 年之前就一直在努力将 Windows 从 UCS-2 迁移到 UTF-16!

【讨论】:

    【解决方案2】:

    很抱歉回复了这么久的帖子,但出于历史目的,一些 cmets 是有序的。

    首先,底层代码存储库 (mercurial) 将所有文件视为二进制文件,就修订而言。您在这里失去的只是查看差异的能力,仍然跟踪物理差异,并且由于乌龟无法显示它们,这些变化的性质并没有变得更大。 (相比之下,JPEG 二进制文件即使对于小的像素变化也有很大的二进制差异;而这些文件的差异相对较小。)

    其次,即使 Tortoise 无法显示差异,如果您正确设置 mercurial.ini 文件,kdiff3 也可以。在您的主目录中,您可能有一个 mercurial.ini 文件,即使只是为了记录您的用户名。如果将其扩展为包含合并模式。在此处查找合并模式:http://www.selenic.com/mercurial/hgrc.5.html

    在那里,您将看到如何告诉 mercurial 应该使用 kdiff3 显示这些文件中的差异,即使 mercurial 认为它们是二进制的。 Tortoise 仍然不会在工作台上显示差异,但是您可以右键单击文件并向父级显示差异,您会看到差异很好。它并不完美,但总比没有好。

    【讨论】:

      【解决方案3】:

      使用 notepad++ 有助于将 UCS-2 编码转换为 UTF-8。

      但是,当我使用它时,例如转换 XML (Visual Studio csproj) 文件,不要忘记将 XML 编码从 utf-16 更改为 utf-8,例如:

      <?xml version="1.0" encoding="utf-8"?>
      

      【讨论】:

        猜你喜欢
        • 2011-09-28
        • 2010-10-02
        • 2011-02-24
        • 1970-01-01
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        • 2017-07-11
        • 2020-09-25
        相关资源
        最近更新 更多