Mac で SVN を使っていると直面する、日本語ファイルの扱いがうまくいかない問題について。
2016年2月時点での最新OS である OS X El Capitan (10.11.2) だとちょっと手間取ったのでメモ。
はじめに、日本語ファイル問題についての説明はこちらの記事が詳しい。
以下、引用させていただくと
Subversionは内部の処理をUTF-8で行い、クライアント環境での文字コードに合わせて適切なコードに変換してから処理を行っています。
けれどもOS Xのファイルシステムでは、実際には「UTF-8-mac」というUTF-8そのものとは少し異なるコードを用いているにも関わらず、Subversionでは「UTF-8」と判断してしまう有名な問題があります。「UTF-8-MAC問題」、と言われている問題です。本問題により、日本語のファイル名、とくに濁点「゛」や半濁点「゜」を用いたファイルのステータスを見ようとすると、
% svn st ? パッチファイル.txt ! パッチファイル.txt %
というように、ファイルの存在を正しく取り扱えません。
自分の PC でもこれが発生していた。
ググって出てきた解決策と、El Capitan における問題
調べてみると、この問題を回避するパッチ --unicode-path を当てた SVN をインストールしてそちらを使えばいいらしい。
また、インストールには Homebrew を使った方法と MacPorts を使った方法があり、それぞれ
1. Homebrew を使った方法
参考:[http://blog.pg1x.com/entry/2014/08/20/000047:title]
$ brew tap homebrew/versions $ brew install subversion17 --unicode-path
2. MacPorts を使った方法
参考:MACでのSubversion日本語対応 - Qiita
$ sudo port -v install subversion +unicode_path
でいけるとのこと。
というわけで、普段パッケージ管理には Homebrew を使っているので 1 の方法を試してみたが、以下のようなエラーが出る。
$ brew tap homebrew/versions $ brew install subversion17 --unicode-path ==> Installing subversion17 from homebrew/versions subversion17: This formula either does not compile or function as expected on OS X versions newer than Yosemite due to an upstream incompatibility. Error: An unsatisfied requirement failed this build.
どうやら El Capitan だと subversion17 はインストールできないよう。
なので、MacPorts によるインストールを試すことにする。
MacPorts で SVN をインストールする
MacPorts をインストール
MacPorts 自体インストールされてなかったようなので以下のサイトからインストールする。
https://www.macports.org/install.php
インストール後、自分の PC では(zsh を使っているからか)PATH が自動的に設定されなかったので、手動で指定する。
~/.zshrc
を開き、
export PATH="/opt/local/bin:$PATH"
とした。
port
コマンドにパスが通っていることを確認。
$ which port /opt/local/bin/port
回避パッチをあてた SVN をインストール
上に書いたコマンドを実行する。
$ sudo port -v install subversion +unicode_path
念のため、/usr/bin/svn
ではなくインストールした方が使われていることを確認する。
$ which svn /opt/local/bin/svn
これで問題が発生していたリポジトリをチェックアウトしなおしたらうまくいきました。