プロジェクト内に2つのファイルがあって、一方はSJIS、もう一方はUTF-8で書かれている。両方修正してMagit上で差分を見ると、当然のように一方が文字化け。やれやれ。コミットログに関してはi18n.commitencodingだとかi18n.logoutputencodingだとか、それっぽいものが用意されているようだが(ちゃんと働くのか確認してないけど)、肝心のファイルの中身はどうすればいいのか分からなかった。
でも、diff.external(GIT_EXTERNAL_DIFF)でdiffを置き換えられると知って、nkfで変換することを思いついた。
.gitconfigに以下を追加。
[diff] external = ~/gitdiff.sh
gitdiff.shは以下のような感じ。自分はMeadowとgitの間は(今のところ)sjisにしているので–sjis。改行コードがLFになるように-d。
#!/bin/sh echo diff --git a/$1 b/$5 echo index $3 $4 diff -u -L a/$1 -L b/$5 $2 $5 | nkf --sjis -d
echoの部分はMagitが認識できるように、できるだけgit標準の出力に近づけた。magit.el内には(looking-at "^diff –git ./\(.*\) ./\(.*\)(")という記述の下に(looking-at "^diff --cc +\(.*\))")という記述もあるのだけど、こっちはどういう状況での出力なのか分からないのでスルー。
なんかもう、Subversionでいいんじゃないかという気がしてくるのだが……。