LINUX.ORG.RU

Можно ли преобразовать кодировку описания коммитов Git?

 


0

2

В свое время я имел неосторожность при коммитах в Git-репозитории создавать описание кириллицей в кодировке CP1251. После перезода на UTF-8 читать журналы Git стало совершенно невозможно. Таких коммитов очень много, а репозитории достаточно ценные.

Насколько я понял, информация в каталоге .git/logs содержит только журналы действий пользователя, и к описанию коммитов никакого отношения не имеет. В частности, прямое перекодирование файлов .git/logs/HEAD и .git/logs/refs/master никакого эффекта не дало.

Я вижу только один путь: последовательный рекоммит с указанием описания в новой кодировке и дальнейший перенос базы для последующих коммитов на новую позицию. Так как таких коммитов много, возможно, придется воспользоваться скриптингом.

Посему вопрос: может ли эта проблема быть решена другим способом? Есть ли инструменты для решения подобных задач?

Да, придется изменять историю, применяя скрипт к каждому коммиту. Я как-то доставал решение для перебивки автора коммита. Попробуй это погуглить.

panter_dsd ★★★★
()

Такие трансформации автоматизируются командой git filter-branch.

maxcom ★★★★★
()
Последнее исправление: maxcom (всего исправлений: 1)

Только учти, что у всех коммитов поменяются sha1. По сути, это будет новая репа.

panter_dsd ★★★★
()

интерактивный ребейз поможет и в этой ситуации. ну и плюс iconv, надо думать..

aol ★★★★★
()

Можно. Только учти что коммиты гита сцеплены между собой в цепочку, и изменение одного повлечёт изменение всех последующих.

Так что с точки зрения гита абсолютно пофиг *что* ты делаешь: это всё-равно является переписыванием истории. man git-rebase (смотри ключик -i) и в книге «Pro Git» этому посвящена отдельна глава.

Macil ★★★★★
()

filter-branch в руки и вперёд. Только да, это деструктивные действия. История будет нарушена, так как описания коммита является частью коммита.

tensai_cirno ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.