Как обрабатывать азиатские символы в именах файлов в Git в OS X
Я нахожусь в US-English OS X 10.6.4 и пытаюсь хранить файлы с азиатскими символами в своем имени в репозитории Git.
ОК, создайте такой файл в рабочем дереве Git:
$ touch どうもありがとうミスターロボット.txt
Git показывает его как восьмеричную форму UTF-8:
$ git version
git version 1.7.3.1
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt"
nothing added to commit but untracked files present (use "git add" to track)
К сожалению, я не могу добавить его в репозиторий Git:
$ git add どうもありがとうミスターロボット.txt
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt"
nothing added to commit but untracked files present (use "git add" to track)
Git просто проигнорировал этот файл.
Использование подстановочных знаков:
$ git add *.txt
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt"
#
но я хочу вызвать команду Git из приложения для определенного имени файла. У меня нет возможности изобретать шаблоны подстановок, которые соответствуют именно этому файлу, но никто другой.
Является ли это известной ошибкой Git или я не использую Git правильно?
Ответы
Ответ 1
Git цитирует любой символ не-ascii по умолчанию, а не только азиаты. Там есть возможность отключить это поведение цитирования.
Вы можете отключить его, используя следующую команду:
git config --global core.quotepath false
Или, альтернативно, добавив следующий фрагмент в ваш конфигурационный файл git (обычно $HOME/.gitconfig)
[core]
quotepath = false
После этого git должен показывать ваши имена файлов так, как они есть.
Что касается вашей другой проблемы, git не добавляя файл с азиатскими символами, я могу только предположить, что он связан с кодировкой, используемой git, не совпадает с кодировкой, используемой вашим терминалом. Я надеюсь, что кто-то еще сможет вскочить и объяснить этот бит.
Ответ 2
Все, что вам нужно сделать, - это реализовать интерфейс IGit с помощью настраиваемого класса репозитория (убедитесь, что каждый метод отмечен как виртуальный), а затем применить эту реализацию интерфейса к кумулятивной когезии GitX. Я сделал это раньше, и это решило мою проблему.