単語単位での2つのファイルの相違点をカラー表示してくれるdocdiffは非常に重宝します。wdiffだと日本語がうまくいかないということで、rubyで作られているdocdiffを使っていますが、Mavericksにアップデートしたら動かなくなるとか、インストーラが以前はあったけど現在のシステムで動かないといろいろあり、困ってしまいました。ソースから動かす方法を、ほとんど自分の備忘録として書いておきます。
まず、githubにあるdocdiffのサイトから、ソース一式を「Download ZIP」ボタンでダウンロードします。Makeとかあるのだけど、Ver.1.8 onlyとあります。MavericksはVer.2.0がデフォルトです。それで、最低限の作業を考えた結果このような流れでできることが分かりました。ダウンロードしたファイルを展開したdocdiff-masterフォルダを基準に説明します。
- bin/docdiffを/usr/local/binにコピーする(あるいは/usr/binにコピー)
- libにある1フォルダ3ファイルを、Rubyのライブラリフォルダにコピーする
ライブラリフォルダとは、以下のパスになります。
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0
これで、1でコピーした先にパスが通っていれば、docdiffコマンドとして稼働します。つまり、
docdiff --format=tty file1 file2
とすれば、カラーリングした結果でファイルの違いを文字単位で表示します。
なお、これをsvn上で使いたいので、次のようなことをしています。まず、上記、ダウンロードしたdocdiffファイルを/usr/local/binにコピーしたとして、/usr/binに以下のようなスクリプト「docdiff」を作ります。もちろん、実行権限を与えておきます。
#/bin/sh /usr/local/bin/docdiff --format=tty $6 $7
こうすれば、svnでのコマンドで
svn diff -r PREV --diff-cmd=/usr/bin/docdiff file
とすることで、たとえば、こんな感じに見えます。このコマンドだと、現在のファイルとRevision 15のファイルを比べていて、赤は消えたもの、青は追加されたものです。黄色の代わりに緑になるという感じです。