ゆず日記

戦う Vimmer 兼 Dvorakユーザ 兼 Kinesisユーザ 兼 おぺらー が戦わないブログ

ターミナルと異なる文字コードのファイルをbzr diffする時の対処とか

今まではWinMergeで差異確認してたので困ってなかったけど、Mac, Linuxのターミナル上でcp932のソースコードをbzr diffすると、ターミナル上で文字化けする。

>http://www19.atwiki.jp/bazaar/pages/13.html
コマンドラインでbzr diffを使うと文字化けすることがありますが
これはテキストとコマンドラインエンコーディングが異なるからです。

変更前後でテキストのエンコーディングが同じであればパイプで
エンコーディング変換ツールや外部の差分ツールに引き渡して表示できます。


>bzr diff -r1..2 | iconv -f テキストのエンコーディング -t CP932
>bzr diff -r1..2 | gvim - -R

Bazaar Wikiの上記の記述を参考に、

bzr diff | iconv -f cp932

でcp932のテキストファイルをUTF-8環境下でも文字化けせずに表示できた。(-t 以降はデフォルトでUTF-8なので省略可。)


ただ、毎回入力するのは面倒くさい。

>http://www19.atwiki.jp/bazaar/pages/13.html
[ALIASES]
diff=diff --using=WinMerge

のように、

[ALIASES]
cp932diff=diff | iconv -f cp932

とすると、|でエラーが出る。まぁ|以降はBazaarのコマンドじゃないもんね。


代わりに、.bashrcに

#ついでにcdiffにしておく
alias bzrdiff='bzr cdiff | iconv -f cp932'

でお手軽運用にした。