MacOSXでp4mergeを使う

MacOSXのターミナルからSubversionの差分ビューワとしてp4mergeを使う方法です。
本来ならば、TortoiseSVNと組み合わせて使うのが理想なのですが、あいにくTortoiseSVNMacOSXに対応していないので、CLIツールと組み合わせて利用できるよう工夫してみました。
なお、Subversion自体はMacPorts等を使ってインストールしてください。

p4mergeの取得

http://www.perforce.com/perforce/downloads/macosx104ppc.htmlから、P4V(Perforce Visual Client)をダウンロードします。
dmgファイルを展開すると中にp4mergeが入っていますので、アプリケーションフォルダにコピーしてください。

p4mergeの設定

まず、p4mergeを実行するシェルスクリプトを作成します。ここでは、ファイル名を'p4merge'とします。

#!/bin/sh
/Applications/p4merge.app/Contents/Resources/launchp4merge $*

次に、Subversionのdiffコマンドから実行されるシェルスクリプトを作成します。ここでは、ファイル名を'svn-diff'とします。

#!/bin/sh

# select only 6th and 7th options, and ignore others.
left=$6
right=$7
if [ ! -z $left ] && [ ! -z $right ]; then
  p4merge $left $right
else
  p4merge -h
fi
exit 0

作成したスクリプトは、それぞれ環境変数PATHに登録されているディレクトリに配置します。
この後 svn diff 実行時に --diff-cmd オプションを使ってこのスクリプトを指定すると、p4mergeを使ってリビジョン間の差分を閲覧することが出来ます。

% svn diff filename --diff-cmd svn-diff 

ちなみに、svn diff を実行する度に毎回スクリプトを指定するのは面倒なので、エイリアスでショートカットを定義すると便利です。

alias sd='svn diff --diff-cmd svn-diff'

参照ページ