Не ожидал, что в мире современного ПО могут быть проблемы с Unicode. Мне казалось, что все неприятности с кодировками закончились с приходом Unicode'а. Давно по крайней мере с ними не встречался. Но, как оказалось, git несколько некорректно работает с русскими именами файлов на Mac'е.
Есть у меня репозиторий, в котором я храню все свои заметки. Половина из них была написана в muse-mode, остальное в Markdown. Соответственно имена файлов с текстом содержат заголовки, содержащие кириллицу. Мне так удобнее. Ранее с таким подходом ни разу проблем не встречал.
И вот проблема на Mac'е. Все русские буквы в выводе git status
отображаются
в восьмеричном виде. И более того все файлы содержащие в именах кириллицу
помечаются как untracked. Пример:
$ izonov:text izonov$ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # (use "git push" to publish your local commits) # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: "linux/2013-05-24 - Git + \320\272\320\270\321\200\320\270\320\273\320\273\320\270\321\207\320\265\321\201\320\272\320\270\320\265 \320\270\320\274\320\265\320\275\320\260 \321\204\320\260\320\271\320\273\320\276\320\262 \320\275\320\260 OS X.md" # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # "linux/2013-05-24 - Git + \320\272\320\270\321\200\320\270\320\273\320\273\320\270\321\207\320\265\321\201\320\272\320\270\320\265 \320\270\320\274\320\265\320\275\320\260 \321\204\320\260\320\270\314\206\320\273\320\276\320\262 \320\275\320\260 OS X.md" # .....
Вторая проблема (untracked файлы) решается достаточно легко. Подсмотрено в вопросе на Stackoverflow:
git config --global core.precomposeunicode true
После этого видим следующее:
$ izonov:text izonov$ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # (use "git push" to publish your local commits) # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: "linux/2013-05-24 - Git + \320\272\320\270\321\200\320\270\320\273\320\273\320\270\321\207\320\265\321\201\320\272\320\270\320\265 \320\270\320\274\320\265\320\275\320\260 \321\204\320\260\320\271\320\273\320\276\320\262 \320\275\320\260 OS X.md"
Решения отображения русских букв в git status
я не нашел. Кириллические
символы в именах новых и измененных файлов все равно отображаются в восьмеричном
виде. Как вариант можно использовать git add -i
. Там все символы отображаются
в привычном виде.
P.S. [2013-05-28]: Вчера Konstantin Khomoutov подсказал, как решить проблему отображения русских букв в git:
git config --global core.quotepath false