エンコーディングが混ざっていても化けない diff
こんな感じ。
for i in `svn status | awk '$1 == "M" {print $NF}'`;
do svn diff $i | nkf ;
done | less
これは動作確認済み。
それかこんな感じ。
for i in `svn diff | awk '/^Index: / {print $2}'`;
do svn diff $i | nkf;
done | less
これはちゃんと確認してない。
というのも、上のものは最初から working copy に存在するファイル、ディレクトリしか処理対象にできないが、下の方法だと diff に -r を与えることで任意のタイミングの diff が取れる。でも本当に存在しないファイルやディレクトリに対して diff が取れるかどうかは確かめてないのです。
なんでこんなことしてるかというと、Trac 上でなぜか diff の見れない changset があるんだよね。たぶん Trac のバージョンが古いからなんだけど、上げる段取り(いろいろあるの)が面倒なので、手元で回避しちゃうのであった。