Mercurial提交消息和日志,支持什么编码,Hg是否关心?

时间:2010-12-01 20:54:23

标签: unicode mercurial

我尝试通过我的Mercurial包装器库进行简单的提交,使用Unicode:æøåÆØÅ的简单文本作为我的提交消息。这将写入文本文件,并使用适当的参数提供给Mercurial:

hg commit --logfile FILE

如果我随后使用TortoiseHg查看存储库,则会正确再现字符。在控制台上,它们被破坏了:

[C:\Temp] :hg log
changeset:   0:6a0911410128
tag:         tip
user:        Lasse V. Karlsen 
date:        Wed Dec 01 21:48:54 2010 +0100
summary:     Unicode:æøåÆØÅ

如果我将hg log的输出重定向到某个文件并将其打开,则会正确再现æøåÆØÅ

所以,我的问题是:

  • 我可以要求hg直接将日志写入文件,还是必须重定向标准输出?
  • 这是否会导致控制台的python编码出现问题,即。一些字符会使hg崩溃而不是仅仅输出错误?
  • 我应该遵守提交消息的已知支持编码吗?

或者只是这么简单:

  • Mercurial并不关心,它接受我提供的文件的内容,无论内容如何,​​并将其存储为提交消息。在生成日志时,它会将它转储回控制台,成为Python控制台输出库在这方面的限制的牺牲品吗?

2 个答案:

答案 0 :(得分:8)

以下可能无法解决问题但可以帮助调试。

退房:https://www.mercurial-scm.org/wiki/EncodingStrategy

  

如果我将hg log的输出重定向到一个文件,并将其打开,则可以正确复制æøåÆØÅ。

所以至少mercurial正确存储提交信息。它只是输出搞砸了。

有些工作沿着这些方向发生但与此无关

[编辑:错过了你在Windows上的事实]

请参阅有关如何处理字符集兼容性问题的最后一段:https://www.mercurial-scm.org/wiki/CharacterEncodingOnWindows

它说:

  • 设置您的控制台代码页以匹配您的系统代码页
  • 使用环境变量覆盖Mercurial的编码
    • 设置HGENCODING将覆盖检测到的系统字符集。
  • 使用命令行选项覆盖Mercurial的编码
    • 使用全局--encoding选项可以在每个命令上设置首选编码。
  • 使用基于GUI的工具与Mercurial进行交互
    • 通过彻底消除那个讨厌的控制台,这也消除了这个问题。
  • 使用Linux / UNIX和UTF-8
    • 这让比尔盖茨哭了。

答案 1 :(得分:0)

如果将git bash用于hg命令,则可以将字符集设置为ISO-8859-1,以修复hg日志中令人讨厌的字符。

为此,请通过单击git bash左上方的图标转到git bash选项 *选择选项 *选择文字 *在底部将字符集设置为ISO-8859-1

我知道这样做很痛苦,但是可以。

相关问题