svn クライアントを探す旅

Windows には Tortoise SVN っていう最強のsvnクライアントがある.

mac は群雄割拠の時代なんだろうか?

とりあえず、有名どころは

  • scplugin
  • svnX
  • iSvn

といった感じらしい

scplugin は、 Trotoise SVN と同じように、Finder に統合されるフロントエンドで、それなりに使いやすいと思う.
diff を直接呼び出せないのが、つらい感じ...
Torotoise SVN を使い慣れている身としては、 scplugin が便利そうだけれども、アイコンのリフレッシュがかなり遅いのは、利用上の難点だと思う.

一応、メニューからアイコンのリフレッシュもできるみたいだけれども、なぜか反映されないことが多い...
(教えて偉い人っ)

svnX は、独特のインターフェースを持っているけれども、機能は一通りそろっていると思う.
デフォルトだと、diff ツールが xcode 付属(?)の FileMerge を利用するようだ.
svnX の難点ではないけれども、FileMerge だと文字コードによってはうまく比較が行えないようだ.
このあたりは、回避方法があるので、それほど問題にはならなさそう...

iSvn は、使ってないので分からない、暇になったら試す.


mac 環境での、svnクライアントを捜してみると、 Trotoise SVN がいかに完成度の高いフロントエンドなのか身にしみてわかる.

scplugin の中の人には是非がんばっていただきたいところだ.

そんなわけで、当面の私の選択としては、 scplugin と svnX の併用をして、細かなところはコマンドラインから操作する
って感じで行こうかと思う.

...ま、今のところはローカルホストにリポジトリを置いて一人で利用するだけだから、それほど問題も起きないだろう...

scplugin のインストール

一時配布元は、以下のアドレスになっているらしい

http://scplugin.tigris.org/

長い間メンテナンスされていなかったようだが、 2008/07/05 に svn 1.5.0 と svn 1.4.6 向けに最新版のインストールパッケージがリリースされている.

Mac OS X(10.5.5) にインストールされている、svn は 1.4.4 でマイナーバージョンが合わないけれども、私の環境では、SCPlugin-0.7.2-1.4.6.dmg
をインストールして動いている

インストーラーがついているので、インストールに関しては何も考えなくて良い.

どこかの svn サーバからチェックアウトを行う場合には、ユーザ名/パスワードなどの設定が必要なようだが、今回はローカルホストなので何も考えなくて良い.

ローカルコピーを取得したいフォルダで、右クリックメニューを出して、[その他] - [Subversion] - [Checkout] と選択して、Repository URL の欄に、リポジトリのパスを指定すればよい.

先日の例で言えば、次のようにリポジトリを指定する.

file://localhost/Users/user/Documents/svn_repos/sandbox

※ (念のため)パスは自信の環境に合わせてね.

使い方は、ほぼ Trotoise SVN と同じだから、特に問題なし.
(ただし、機能は少ない)

scplugin のアンインストール

いつか邪魔になると困るので、アンインストールの方法も調べておく.

アンインストールは以下の2つのファイルを削除。ログアウトが必要。
/Library/Contextual Menu Items/SCFinderPlugin.plugin
/Library/Receipts/SCPlugin.pkg

svnX のインストール

一時配布元は、以下のアドレスらしい

http://www.lachoseinteractive.net/en/community/subversion/svnx/features/

インストーラは付属していないが、アーカイブを開くと出てくる "svnX.app" をアプリケーションフォルダにコピーすればインストール完了.

起動すると、パス上に svn が見つからないといったエラーが出てくると思うので、適当に指定しておく.

おそらく、"/usr/bin" とか指定しておけばよい.

svnX の使い方

起動すると、"Repository" ウインドウと、"Working Copy" ウインドウが立ち上がっていると思う.
(立ち上がっていなければ、window メニューから呼び出しできる)

"Repository" ウインドウの、Edit 欄に、適当なリポジトリのパスと識別のための名前を付けて、上段のリポジトリ一覧をダブルクリックすると、ログなどの確認が行える.

ローカルコピーの取得(チェックアウト)もここから行える.

ログは、日本語でも正しく表示できている様子.

scplugin では、ログの表示で日本語が文字化けてしまうようなので、ログの確認を行う場合には、svnXを利用することにする.
(どこかに設定があるのかな?)


"Working Copy" ウインドウでは、ローカルコピーの管理が行える.

scplugin でチェックアウトしようが、コマンドラインからチェックアウトしようが、管理が行えるので便利かもしれない.

使い方に癖があるといわれているのが、おそらくこのウインドウだと思う.

Flat Mode にチェックが入っていると、階層構造を単純なリストにして表示してくれる.

Smart Mode にチェックが入っていると、変更があったファイルだけをリスト表示してくれる.

個人的には、操作性にそれほど難があるとは思えない.

...scplugin は、finder のにぎやかしでつかって、メインは svnX を利用することになるのか?

diff の設定

ヘチマ_BLOG さんのページを参考にさせていただいた.

http://hetima.com/pblog/article.php?id=87

(ありがとうございました)

以下、何かの時のために書き残しておく

nkf をインストールするのがめんどくさかったので、phpスクリプトを拝借.

#!/usr/bin/php
<?php
    $body=file_get_contents($argv[1]);
    //改行コードもついでに変換
    $body = str_replace("\r\n", "\n", $body);
    $body = str_replace("\r", "\n", $body);
    echo mb_convert_encoding($body,"sjis","auto");
?>

上記スクリプトを、適当な場所に置いて、パーミッションに 755 を設定

(...念のため)

[user@host:~/etc]$ chmod 755 ./diff_filter.php 

適当な場所に保存して、 FileMerge の "Preference" から "Options" と、 "Filters" の設定を行う.

Options では、日本語が表示できるフォントに設定しておく.

Fileters では、ファイルの拡張子毎に、利用するフィルターを設定できるので、上記スクリプトをフィルターとして用いる

Extention の欄には、利用したい拡張子.
Filter の欄には、スクリプトのパスと $(File) と書く.(例: "~/etc/diff_filter.php $(FILE)")
Display は、 Filtered に設定.
Apply は、No に設定.

まとめ

svnX でも、結構生きられるかも...