Mercurial关键字扩展utf-8

时间:2015-08-12 07:26:44

标签: utf-8 mercurial

我正在使用mercurial在win 7系统上对我的perl脚本进行版本控制。脚本是ÄÖÜäöü...个文件。我激活了关键字扩展,以查看提交消息,...在文件本身。这很好用,期待一件小事。如果我在提交消息中有[web] encoding = utf-8 之类的变音符号,我会看到类似的内容:

  

“xFC”(=ü)或“xE4”(=ä)作为替换关键字。

我发现的唯一一件就是这个,我把它放在我的mercurial配置中

{{1}}

但这没有用。如何强制mercurial用utf-8编码或我想要的任何其他编码替换关键字?

1 个答案:

答案 0 :(得分:1)

我无法看到 now 以任何方式获得正确的结果,因为

  1. 在关键字定义中,您只能使用模板+过滤器和纯文本,而不能使用HG命令和操作系统命令
  2. 将非UTF8字符串插入UFT8编码的文件中(在我的测试中,可能不正确的样式)文件 - 文件转换为ANSI,UTF8部分变得不可读
  3. 我的测试用例

    • 1251(俄语Windows)代码页 - 完整8位
    • 带有一些俄语字符串的repo中的UTF8(带BOM)文件
    • 在提交消息中提交俄语文本(为了混合UTF8文件和1251日志消息)
    • 您的完整关键字地图(虽然我只能使用last_log

    结果,我得到了(你不能阅读俄语块,但可以比较这些字符串之前和之后)

    <强>来源

    Country=RU
    Name=Scartel-Yota
    Site=http://www.yota.ru
    Image=Scartel-Yota.bmp
    
    City=Москва
    

    扩展关键字(文件变为 ANSI编码

    // $last_log: Исправлено кодирование на UTF8 $
    
    Country=RU
    Name=Scartel-Yota
    Site=http://www.yota.ru
    Image=Scartel-Yota.bmp
    
    City=РњРѕСЃРєРІР°
    

    <强>Сonclusion

    为了获得平滑的结果,您必须在插入UTF8-target之前将log-message重新编码为UTF8,例如

    chcp 65001 && hg log -r tip -T "{desc|nonempty}"

    但是我不能(不知道,如何)在关键字映射中使用任何 HG命令(chcp + log可以是shell-alias以实现可用性和可读性,但无论如何别名都可以'是关键字定义AFAICS的一部分)