Emacs最新変更ページ取得中です。広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。)MacでのUTF-8-MAC問題を解決する方法このページでは、MacでSubversionを使用するときにぶち当たる問題「UTF-8-MAC問題」を解決する方法について記します。+unicode_path』と、“+unicode_path”を追加指定すればOKです。すれば、このページで紹介している方法をわざわざ実施するまでもありません。10時58分51秒;どんな問題を解決しようとしているの?Subversionは内部の処理をUTF-8で行い、クライアント環境での文字コードに合わせて適切なコードに変換してから処理を行っています。Xのファイルシステムでは、実際には「UTF-8-mac」というUTF-8そのものとは少し異なるコードを用いているにも関わらず、Subversionでは「UTF-8」と判断してしまう有名な問題があります。「UTF-8-MAC問題」、と言われている問題です。パッチファイル.txt%というように、ファイルの存在を正しく取り扱えません。ソースコードの管理に使用するだけならアルファベットのファイルしか多分扱わないので問題はないでしょうが、プログラマ以外の人とSubversionを使用する設計書などのドキュメントをバージョン管理する他のOS(Windowsなど)を使うユーザとSubversionを共用するなどという場合に非常に厄介な問題になるわけで。この問題を解決しよう、というのが以下に記述する方法です。本問題を解決するに当たって、多くのサイトの情報を参考にさせてもらいました。それらはできる限り参考サイトに載せておきましたが、載せられなかった方については、この場を借りてお詫び&お礼を申し上げておきます。想定環境ソースコードに直接手を入れているので、ページ初回作成時の環境を明示しておきます。path.cに手が入ったようで、関数svn_path_cstring_to_utf8()が1070行に移動しています。Subversionのソースコードで手を入れるところは少なく、関数名も変わったりしないような部分なので旧バージョンや今後のバージョンでも問題は出にくいでしょうが、ターゲットが異なる方は行番号や関数名などには気を付けてください。手順まず、大まかな手順を伝えておきます。MacPortsでSubversionのソースコードを入手(まだインストールはしない)ソースコードの変更MacPortsでインストールの続行1.MacPortsでSubversionのソースコードを入手MacPortsのサイトから、MacPortsをインストールしたら、Subversionのソースコードを入手します。subversion%と入力します。これによってSubversionで./configureが行われる前の状態まで処理が進み、以下の場所にソースコード一式が保存されます。/opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/subversion/work/subversion-1.5.1/subversionこの中のファイルを修正します。上に記した場所に移動して、libsvn_subr/path.cをエディタで開きます(*1)。以下のdiff結果に示すような変更を施します。このときの注意点として、関数svn_path_cstring_to_utf8()に手を入れるようにしてください。最初ボクは間違えてすぐ近くのsvn_path_cstring_from_utf8()に手を入れてしまい、コンパイルできたもののsvnが起動すら出来なくなってしまいました(*2)。注意!!なお他の依存関係のあるportは先にインストールしてしまっても構わないので、次のようにしておいた方が楽かもしれません。修正したファイルによってSubversionをビルドします。svn」として、/opt/local/binの下にパスが通っていればOK。installした後、修正したソースコード一式はportによって削除されてしまいます。とっておきたい場合はSubversionのフォルダごと別の場所にコピーしておいてください。SubversionのBTSでは「この問題はけっこう複雑なので、(今回紹介した)パッチをコミットすることはできない」と書いてあります。今のところ問題は出ていませんが、念のためご注意ください(ご利用は自己責任で、ということですスミマセン)。参考サイト調べたサイトSubversionでの該当課題(#2464)。本記事ではここに投稿されていたパッチファイルを使用しています。上のパッチを投稿した人のサイト。Unavailable」でした。Xで日本語が通るSubversion環境の作り方。UTF-8-MAC問題の原因が分かったサイト。ここで紹介されていたget_ntou_xlate_handle_node()とget_uton_xlate_handle_node()を変更する方法では問題は解決しませんでした。その他、MacでSubversionを使用するときの有益なサイトMacPortsのサイトMacPorts勉強会の資料。詳しく載っているので、一度見ておくと良いです。Mac上でTortoiseSVNと同様のUIを提供するソフト(ボクは未使用)。インストールする方法はココが詳しいです。コメントお気軽にコメントくださいな。2008/9/25時点の1.5.2でも同様の方法でパッチが当てられることを確認しました。16:11:58)2008/11/05時点の1.5.4でも大丈夫でした。15:13:23)2008-12-25時点の1.5.5も全く同じでした。参考にさせていただきました。ありがとうございました。19:46:08)hayatoさん、ご連絡ありがとうございます。このパッチ,trunkに取り込まれると良いんですけどね。日本語だけでなく,その他のマルチバイト文字でも影響がある問題なので。1.5.6でも同じでした。ありがとうございました。13:09:40)ご確認ありがとうございます。この辺はもう手が入ることは無いんですかね。毎回の修正は面倒なのに、こまったものです。16:05:49)1.6でも同じ方法で動かせることを確認。path.cに手が入ったようで、目的の関数の行が変化していることに注意。10:03:19)1.6.1でも確認しました。16:49:48)この問題に対応するvariantの+unicode_pathが用意されていたみたいです。23:57:58)おお!ありがとうございます!ついに、ついに報われる日が来たという感じですね。このページもとうとう必要のないものになりました。viなどで開くことに注意。subversion」で最初からやり直してください。