Используют ли структуры данных хранилища git каноническое кодирование? - PullRequest
0 голосов
/ 13 июня 2018

Я использую dulwich (библиотеку Python) для доступа к репозиторию git.Когда я использую get_object для извлечения коммита, он имеет ряд атрибутов.Одним из них является author.Когда я получаю этот атрибут, я получаю bytes, и поэтому атрибут является неизвестной кодировкой.

Есть ли кодировка, которую я могу смело предположить?Переводит ли git все метаданные в utf-8 перед сохранением?Если это не так, как я узнаю, какую кодировку использовать для декодирования байтов?

1 Ответ

0 голосов
/ 13 июня 2018

Метаданные должны быть закодированы со значением, установленным i18n.commitEncoding значением конфигурации ;всякий раз, когда создается коммит, текущее значение копируется в заголовок «encoding» объекта, если он установлен;значение по умолчанию - UTF-8.

Это значение кодирования доступно для объектов Dulwitch как атрибут '.encoding';если это None, то i18n.commitEncoding не было задано явно, и вы можете использовать UTF-8 по умолчанию.

Однако!Фактические сохраненные данные просто следуют за теми байтами, которые были переданы git, и никакого перекодирования не происходит.Значение конфигурации является чисто информационным.Таким образом, вы должны принять во внимание, что был использован неправильный кодек, если вы собираетесь использовать object.encoding or 'utf8' в качестве кодека, использовать разумный обработчик ошибок или альтернативную стратегию.

...