Mercurial фиксирует сообщения и журнал, какая кодировка поддерживается, HG вообще заботится?

Я попытался сделать простую фиксацию через мою библиотеку обертки для Mercurial, используя простой текст Unicode:æøåÆØÅ как мое сообщение коммита. Это записывается в текстовый файл и передается Mercurial с соответствующим параметром:

hg commit --logfile FILE

если я впоследствии посмотрю на репозиторий с TortoiseHg, символы будут воспроизведены правильно. На консоли они искалечены:--8-->

[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 - файл, и откройте его, æøåÆØÅ is воспроизводится правильно.

Итак, мой вопрос таков:

  • могу я спросить hg чтобы записать журнал в файл напрямую,или мне нужно перенаправить стандартный вывод?
  • это вызовет проблемы с кодировкой Python для консоли, т. е.. некоторые персонажи сделают hg сбой вместо того,чтобы просто искажать вывод?
  • есть ли известная поддерживаемая кодировка для сообщений фиксации, которой я должен придерживаться?

или это просто такая просто:

  • Mercurial не заботится, он берет содержимое файла, который я ему даю, независимо от содержимого, и сохраняет это как сообщение фиксации. При создании журнала он просто сбросит его обратно на консоль, став жертвой любых ограничений, которые имеет в этом отношении библиотека вывода консоли Python?

1 ответов


следующее может не решить проблему, но может помочь отладить ее.

Проверьте:https://www.mercurial-scm.org/wiki/EncodingStrategy

Если я перенаправляю вывод журнала hg в файл и открываю его, æøåÆØÅ воспроизводится правильно.

таким образом, по крайней мере mercurial сохраняет информацию о фиксации правильно. Это только результат, который испорчен.

некоторые работы происходят по этим направлениям, но не связаны с это

[Edit: пропустил тот факт, что вы находитесь в windows]

см. последний абзац о том, как справиться с проблемами совместимости набора символов:https://www.mercurial-scm.org/wiki/CharacterEncodingOnWindows

Он говорит:

  • установите кодовую страницу консоли в соответствии с системной кодовой страницей
  • переопределить кодировку Mercurial с переменной среды
    • настройка HGENCODING переопределит обнаруженный системный набор символов.
  • переопределить кодировку Mercurial с помощью опции командной строки
    • использование опции global --encoding позволит вам установить предпочтительную кодировку для каждой команды.
  • используйте инструменты на основе GUI для взаимодействия с Mercurial
    • это также устраняет проблему, устраняя эту надоедливую консоль полностью.
  • используйте Linux / UNIX и UTF-8
    • это заставляет Билла Гейтса плакать.