日本語ファイル名が使えなかった旧git

git 1.7.12でUTF8-MAC問題が解決

gitの唯一の弱点は日本語ファイル名に弱いことだ。
つい最近WindowsではUTF-8ファイル名に対応したが、MacではUTF8-MAC(UTF-8-MAC)問題という持病を抱えていた。
このため、WindowsやLinuxで濁点、半濁点とかの入った日本語ファイル名のファイルを含むリポジトリを作成し、Mac上にcloneすると、次の画像のようにこれらのファイルをリポジトリ内のファイルとして見なしてくれないと言う問題があった。

日本語ファイル名が使えなかった旧バージョンのgit
日本語ファイル名が使えなかった旧バージョンのgit

簡単に説明すると、ファイル名の見た目はLinux等と一緒だが、文字コード的に濁点の扱いが微妙に違うためである。ある意味、文字化けの類の問題である。この説明はかなり端折っていて不正確なので、技術的な詳細はこちらを参照して欲しい。

これまで、解決するにはnfsをマウントする方法や、パッチはあったが、本家では取り込まれていなかったし、誰もが諦め掛けていた。

しかし、2012/08/19。ついに、この問題が解決した!

Git 1.7.12 – Git Blame

An experimental support for UTF-8 pathnames on MacOS.
I think there still are places that need conversion between the system encoding (UTF-8 normalized by decomposing) and the more commonly used encoding (precomposed) that is used internally for better interoperability, but this should be a good start.

これは素晴らしい。
インストール方法は以下の通り。

まず、ここからgit-1.7.12.tar.gzをダウンロードする。(リポジトリからgit cloneするのがgit使いの流儀かもしれないけど、僕はそれほどgitに思い入れはないので)

#macportsがインストールされていること
#macportsが/opt/localにインストールされていること
#/opt/local以下にgitをインストールする
tar -xvzf git-1.7.12.tar.gz
cd git-1.7.12
./configure --prefix=/opt/local
make
sudo make install

ただしパッケージ管理とかは無視してしまうので、良い感じにして下さい。
(ここら辺を分かってる人がgit使うと思うので詳しくは説明しない)

しかし、これだけではUTF8-MAC対策機能が有効にならないらしい
実験的な機能という扱いなのでデフォルトで無効となっている。
gitの設定で「core.precomposeunicode」をtrueにしてあげなければならない。
そのためには、リポジトリのディレクトリで以下のコマンドを実行する。

git config --local core.precomposeunicode true

ちなみに、このバージョンでgit cloneやgit initすると、リポジトリの設定として「core.precomposeunicode」が明示的にfalseとなっているため、global設定を変えても反映されない。既存のリポジトリであればglobal設定が反映されるかもしれない。一応念のためglobalにも設定をしておく。

git config --global core.precomposeunicode true

さて、これにより、濁点を含むファイル名も正しく扱われるようになった。
試しに「git status」をしてみると確認できると思う。

「git 1.7.12でUTF8-MAC問題が解決」への4件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です