47 lines
2.3 KiB
Markdown
47 lines
2.3 KiB
Markdown
|
---
|
|||
|
tags: ["git", "iconv", "cp866", "cp1251"]
|
|||
|
---
|
|||
|
|
|||
|
Открываем git bash, жмём **ПКМ > Options… > Text**. Ставим там `Locale = ru_RU` и `Character set = UTF-8`. Шрифт (Font) должен поддерживать кириллицу.
|
|||
|
|
|||
|
Задаём настройки в файле `config` репозитория:
|
|||
|
|
|||
|
```
|
|||
|
[core]
|
|||
|
...
|
|||
|
quotepath = false
|
|||
|
[i18n]
|
|||
|
# кодировка сообщений коммитов
|
|||
|
commitencoding = cp1251
|
|||
|
# кодировка вывода в консоль, если не задана, то == commitencoding
|
|||
|
logoutputencoding = cp866
|
|||
|
```
|
|||
|
|
|||
|
Переходим в рабочую директорию проекта и смотрим кодировку коммитов:
|
|||
|
|
|||
|
```
|
|||
|
git log --pretty="%h [%e] %s"
|
|||
|
```
|
|||
|
|
|||
|
Вывод будет приблизительно таким:
|
|||
|
|
|||
|
```
|
|||
|
495d3cb [cp1251] Popups png -> jpg
|
|||
|
fc0961e [cp1251] Keyboard png -> jpg
|
|||
|
8665af6 [cp1251] Buttons png -> jpg
|
|||
|
27fa7c0 [cp1251] Backgrounds png -> jpg
|
|||
|
...
|
|||
|
```
|
|||
|
|
|||
|
Сначала идёт короткий хеш коммита, в квадратных скобках — его кодировка (может быть пустой), а далее его комментарий. Комментарии на кириллице могут отображаться коряво, если ранее настройки git bash не менялись (или стояли отличные, от указанных выше) и работа в консоли велась в другой кодировке.
|
|||
|
|
|||
|
Запускаем перекодирование
|
|||
|
|
|||
|
```
|
|||
|
git filter-branch --msg-filter 'iconv -c -s -f CP1251 -t UTF-8' --tag-name-filter 'cat' -- --all HEAD
|
|||
|
```
|
|||
|
|
|||
|
Теперь можно обновлять свой remote. Остальным участникам разработки остаётся только получить свежий репозиторий и работать уже с ним. Вопросы переноса чужих наработок, не попавших в новый перекодированный репозиторий, оставляю за кадром.
|
|||
|
|
|||
|
[Источник](https://axenov.dev/%d1%81%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%be%d0%b4%d0%b8%d1%80%d0%be%d0%b2%d0%ba%d0%b8-git-%d1%80%d0%b5%d0%bf%d0%be%d0%b7%d0%b8%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d1%81-cp-1251-%d0%bd%d0%b0-utf-8/)
|