MeldとはGUIで差分表示が出来るツールです。Shift_JIS、EUC-JP、UTF-8等の文字コードに対応し、インターフェースも日本語化されていて使い勝手は上々です。単体でもSubversionに対応しているようですが、ここではsvn diff用の外部ツールに設定をしてみます。

Meldをインストール

DebianやUbuntuの場合はパッケージ化されているので導入は簡単です。

$ sudo apt-get install meld

日本語を含むファイルを扱う場合は同時にpython-japanese-codecsもインストールしておくと良いでしょう。

Subversionの設定

基本的には/etc/subversion/config内のdiff-cmdの値を編集すればいいのですが、diff-cmdにはファイル名のみで引数を設定出来ないようです。ですので、meldを呼び出すためのシェルスクリプトをあらかじめ作っておく必要があります。

#!/bin/sh

# 外部Diffプログラム
DIFF="meld"

# 引数の指定
LEFT=${6}
RIGHT=${7}

$DIFF $LEFT $RIGHT &

こんな内容のファイルをどこか適当な場所に保存し、chmod +xで実行権限を与えておきます。

次に/etc/subversion/configを開き、

# diff-cmd = diff_program (diff, gdiff, etc.)
diff-cmd = 上で作ったファイルのフルパス

と、diff-cmdの値を書き換えて保存します。これでsvn diffで呼び出されるツールがmeldに切り替わります。

注意点

多数のファイルを編集していて、その親ディレクトリでファイル名を指定せずにsvn diffとやるとファイル数分のMeldが立ち上がります…

あとsvn-diff.vimをすでに導入している方はやらないほうがいいでしょう。