投稿日:

    カテゴリー 技術 / デザイン / 制作

    WindowsとMac間でSubversionを使うとファイルの存在を正しく取り扱えない件

    お久しぶりです
    WPチームすぎやまです。
    こんばんは

    さて、弊社内ではファイル管理で主にSubversionを利用していますが
    WindowsとMac間でしばしばSubversion UTF8-MAC問題

    ? パッチファイル.txt
    ! パッチファイル.txt

    のようなファイルの存在を正しく取り扱えない問題に直面します。
    それを回避するお話です(というか備忘録)

    そもそもこの問題がなんで起こっているのかというとSubversionは内部の処理をUTF-8で行い、
    クライアント環境での文字コードに合わせて適切なコードに変換してから処理を行っています。
    けれどもOS Xのファイルシステムでは、実際には「UTF-8-mac」というUTF-8そのものとは少し異なるコードを用いているにも関わらず、
    Subversionでは「UTF-8」と判断してしまうからです。

    結果、日本語のファイル名、とくに濁点「゛」や半濁点「゜」を用いたファイルのステータスを見ようとすると先ほどの

    ? パッチファイル.txt
    ! パッチファイル.txt

    のようになってファイルの存在を正しく取り扱えません。

    ソースコードの管理に使用するだけならアルファベットのファイルしか多分扱わないので問題はないでしょうが、

    ・プログラマ以外の人とSubversionを使用する
    ・設計書などのドキュメントをバージョン管理する
    ・他のOS(Windowsなど)を使うユーザとSubversionを共用する

    などという場合に非常に厄介な問題になるわけで。
    この問題を解決しよう、というのが以下に記述する方法です。

    ※homebrewを使用するものとmacportを使用するものがありますが
    これから記述するものはmacportを使用するものになります。

    作業にはmacのターミナルでコマンドを叩くのが主な作業になります。

    ①xcode,macportのインストール

    https://developer.apple.com/jp/technologies/tools/
    http://www.macports.org/install.php

    ※macportのインストールが完了したらターミナルを再起動する

    ②現在のsubversion をアンインストール

    sudo port uninstall subversion

    ③念のためワーキングディレクトリをつくってそこで作業

    cd /
    sudo mkdir svn
    cd svn

    ④最新のmacportだとsubversionの1.7をインストールできないためリビジョンを指定してインストールする。106653は1.7の最新

    ※実際に自分でインストールしたときには最新の1.8系のunicode_pathが正しく動作しない
    という情報があったため1.7系の最新をインストールしました。

    sudo svn co http://svn.macports.org/repository/macports/trunk/dports/devel/subversion -r 106653 svn

    ⑤unicode_path付きをインストールする

    sudo port install +unicode_path

    ⑥最後に

    which svn

    として、/opt/local/binの下にパスが通っていればOK。
    作業完了です。