【问题标题】:How to Prevent "svn diff" from Generating Unicode Output on Windows如何防止“svn diff”在 Windows 上生成 Unicode 输出
【发布时间】:2010-07-19 14:08:45
【问题描述】:

在我的 Windows 机器上,我尝试使用命令 svn diff > my_patch.diff 创建一个 Subversion 补丁。生成的文件是用 UTF-16 编码的,而不是 UTF-8 或 ASCII,所以当我尝试使用 patch(来自 GnuWin32)来应用补丁时,它不起作用。

我能够通过在记事本中打开补丁文件并将其保存为所需的格式,将补丁文件转换为 UTF8,然后patch 处理得很好。但是,有没有办法让svn diff 在 Windows 上生成 UTF8?


更新:正如我的回答所示,事实证明问题与 Subversion、diffpatch 无关。正是 PowerShell 将输出转换为 Unicode 非常有帮助。我将问题保留原样,以便遇到类似问题的人可能会偶然发现它。

【问题讨论】:

  • 在 linux 风格中,可以给出 --diff-cmd,Windows 命令行变体也是这种情况吗?
  • --diff-cmd 受支持。我应该使用什么作为参数?
  • 旁注:Subversion 不喜欢 UTF-16 或 UTF-32。它总是将它们视为二进制文件,因此svn diff 甚至对它们不起作用(脑死但仍然没有修复)。因此,(目前)不可能有svn di Unicode 在 UTF-8 之外的任何其他方式。
  • 我遇到了这个确切的问题。谢谢!最令人沮丧的部分是 svn patch 没有报告任何类型的错误;刚刚执行,没有输出,也没有更改文件。

标签: svn powershell diff patch


【解决方案1】:

在对不同的diff 实用程序进行了大量试验和试验后,我发现了这一点:

我在 PowerShell 命令窗口中运行我的svn diff。 PowerShell 的输出重定向运算符将输出转换为 Unicode

如果我在cmd.exe shell 中运行svn diff > my_patch.diff,那么一切正常。

要在 PowerShell 中完成这项工作,必须使用如下命令:

svn diff | out-file -encoding ascii my_patch.diff

我敢肯定,微软有人认为这种行为真的很棒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 2011-03-09
    相关资源
    最近更新 更多