Mercurial сообщения коммита и журнал, какая кодировка поддерживается, Hg заботится вообще? - PullRequest
6 голосов
/ 01 декабря 2010

Я попытался сделать простой коммит через мою библиотеку-обертку для 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 ]

8 голосов
/ 02 декабря 2010

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

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

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

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

Некоторая работа происходит в том же духе, но не связана с этим

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

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

В нем говорится:

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

Если вы используете git bash для команд hg, вы можете установить Набор символов *1003* на ISO-8859-1, чтобы исправить эти раздражающие символы в журнале hg.

Для этого перейдите в параметры git bash, щелкнув значок в левом верхнем углу git bash. * выберите параметры * выберите текст * Внизу установите Набор символов на ISO-8859-1

Я знаю, что это больно, но это работает.

...