レタスのかわをぜんぶむく

ぜんぶむきます

Cornerstoneを捨てて、UTF-8-MACと戦った話

おしごとでGithubを使いはじめて数年。
案件な関係でSubversionと相見えることに。

Cornerstoneの様子がおかしい

www.zennaware.com

前に使っていたCornerstoneというSubversionクライアントを使って作業開始。
しばらく使ってると不思議な挙動に気づく。
自分の担当箇所をいじってコミットしようとすると
全然いじってないファイルが編集済みにマークされている…


無視してコミット出来るっちゃ出来るけど相当に気持ち悪い。
その上、すんげークライアントの動きがまったりしている。


プロジェクトの規模感(ブランチ単位で20GB)もあるから仕方ないけど
作業できなければ、オフィスの二酸化炭素濃度上げてるだけなので
とりあえず作業進めるために、ガワ無い分おそらく速いだろうと思われる
CUI直叩きで作業をすることに決めた。(やったこと無いしどうせなら勉強)

CUI用のSubversionのインストール

Cornerstone自体がSVNクライアントを内包しているようで
外からうまく叩く事が出来なかった。なんと。
これまで使っていたSubversionはCornerstoneと一緒にさよなら。


さくっとMacPortsで入れてみる。

$ sudo port install subversion
--->  Fetching archive for subversion
--->  Attempting to fetch subversion-1.9.0_0.darwin_14.x86_64.tbz2 from http://packages.macports.org/subversion
--->  Attempting to fetch subversion-1.9.0_0.darwin_14.x86_64.tbz2.rmd160 from http://packages.macports.org/subversion
--->  Installing subversion @1.9.0_0

1.9.0系入ってきた!なんか知ってるやつより新しい!
絶対早くなるパターンだ!コレで勝つる!
さっきまで触ってたプロジェクト直下に行って

$ svn info
svn: E155036: Please see the 'svn upgrade' command
svn: E155036: The working copy at '/Projects/project'
is too old (format 29) to work with client version '1.9.0 (r1692801)' (expects format 31). You need to upgrade the working copy first.

歴史のあるプロジェクトだもんで、リポジトリのバージョンも古い。
調べてみる限りだと、ワーキングコピーだけバージョン上げられるっぽいけど、
他の影響考えたり、検証の手間を避け一旦は現行バージョンまで落とす事に。


まぁ早い話、チキッた
良いの!お仕事だから安全第一。
自分プロジェクトだと、えいやってやるけどね。

複数バージョンをインストール出来るらしい

古いバージョンのSubversionを入れようと思って調べていると
どうやら、古いバージョンのPortFileを直接使えばいいらしい。


MacPortsリポジトリブラウザを開いて
( dports in trunk – MacPorts )
ツリーを開いてSubversionのPortFileを探すとこんなページに行くので
( Portfile in trunk/dports/devel/subversion – MacPorts )
ここから前後へ移動で、インストールしたいバージョンのものを検索。
Subversionについては、前のバージョンに合わせて1.7.xを入れることに。


例えば、ここでお目当てのバージョンが1.7.10だとすれば
リビジョンは106653になるので下記のようなコマンドを実行。

$ mkdir tmpsvn
$ cd tmpsvn
$ svn co -r 106653 http://svn.macports.org/repository/macports/trunk/dports/devel/subversion
$ cd ./subversion
$ sudo port install
 ....
$port installed subversion
The following ports are currently installed:
  subversion @1.7.10_1 (active)
  subversion @1.9.0_0

うむ。入っているしちゃんと動く。少し動作も早くなった感ある。


ただし、日本語ファイルがアレなのはさっきと一緒(アー
どうやらSubversionが古いことが原因ではない模様。

UTF-8-MAC

色々調べているとこんな記事を見つけた。

svnで日本語ファイル名を使ってるとMAC-UTF8では違うファイル名ってことになるのでcheckoutしてきただけで変更扱いになる。

http://docs.komagata.org/4962

まさにコレ。バージョンはあってたけど、
ビルド時のフラグ必要だったっぽい。
仕方ないので、現状の1.7.10は消しちゃう。

先にactiveなバージョンを退避させてアンインストール。
(なんか巻き込み事故あったら怖い

退避
$ sudo port activate subversion @1.9.0_0
--->  The following versions of subversion are currently installed:
--->      subversion @1.7.10_1
--->      subversion @1.9.0_0 (active)
アンインストール
$ sudo port uninstall subversion @1.7.10_1
--->  Uninstalling subversion@1.7.10_1
--->  Cleaning subversion

どうやら、MacPortsではソースからビルドする時と
同じようにオプジョンをつけられるらしい。

オプションの確認
$ port variants
subversion has the variants:
   disable_keychain: Disables support for the Mac OS X Keychain
   mac_os_x_server_mod_dav_svn: Unsupported - attempt to build the subversion apache module with apple supplied apache2
   mod_dav_svn: Install the subversion apache module (mod_dav_svn)
   no_bdb: Build without support for BerkeleyDB repositories
   tools: Install some optional extra subversion tools
   unicode_path: Installs a hack to workaround Mac OS X unicode path issues
   universal: Build for multiple architectures

unicode_path: Installs a hack to workaround Mac OS X unicode path issues

こいつか

オプションつけて再インストール
$ sudo port install +unicode_path
 ....
$ port installed subversion
subversion @1.7.10_1+unicode_path (active)

試してみると、無事日本語問題解決してた。