суббота, 28 февраля 2015 г.

Git и имена файлов с кириллицей

Возникла необходимость в Git хранить файлы, в имени которых встречаются символы кириллицы. Сама проблема описана здесь:
Git for Windows
MSYS programs don't fully support Unicode yet, e.g.
  • bash doesn't let you type non-ASCII characters
  • ls converts non-ASCII characters to '?' when printing to the console (redirecting to a file or another program works, though)
Tcl only supports BMP (Basic Multilingual Plane, i.e. Unicode characters \u0000 - \uffff), therefore gitk and git-gui currently don't support e.g. CJK Extensions B - D.
Некоторые советы они приводят там же. В общем, полезно следить за обновлением документации.

Хочу заметить, что проблема с преобразованиями решена в Git 2.1 http://stackoverflow.com/a/25098609/3364871, но msysgit пока стоит на версии 1.9.5.

Оказалось не всё так просто, но проблема решена.


Шаг 1. Включить поддержку ввода русских букв

Создать файл ~/.inputrc со следующим содержимым:
## allow to type russian letters
set output-meta on
set convert-meta off

Работает даже автодополнение.


Шаг 2. Исправить вывод команды ls

Команда ls часто используется при работе в консоли. В исходном варианте она показывает вместо кириллицы знаки вопроса:


Вывод утилиты cat учитывает настройки локали. Поэтому добавляем в файл ~/.bashrc следующее содержимое:
ls_git() {
    ls $@ | cat
}
alias ls=ls_git


Шаг 3. Изменить настройки git

По-умолчанию git старается экранировать символы, которые не входят в ASCII ("\nnn\nnn...").


Чтобы отключить это нужно ввести команду:
git config [--global] core.quotepath off

Флаг --global влияет, куда будут записаны настройки (и на что они будут действовать).


См. также:





Комментариев нет:

Отправить комментарий