コミットメールが文字化けする
環境: Debian sarge で Subversion 1.3.1 使用時。
ほとんどDebianの初期設定のままで使ってるから、他にも化けてる人はたくさん居そうなので書いておきます。
ちなみに、メールを送るpost-commitスクリプトには、ネットで拾ったRubyのやつを利用。
通の文字化けでなくて、文字がバックスラッシュ記法の数字で
?\130?\146?\227?\131?\170?\227?\131?\149?\227?\130?\161 ?\227?\130?\175?\227?\130?\191?\227?\131?\170?\227?\131?\179?\227?\130?\176
とかみたいに表示される場合がこのケース。
原因は、Apacheがwww-data権限でsvnlookを起動しようとすると、ロケールの周りがうまくないのかLANG環境変数が設定されていないのか、
それを察知したsvnlookがUTF-8データをバックスラッシュ記法にエンコーディングしてしまうこと(たぶん)。
だから、LANG環境変数を設定してsvnlookコマンドを実行してやればいいだろうと予想して実行。
ちまたでは svnlog2utf8.rb とかもあるようですが、自分の環境では、以下で十分動いてます。
svnlook = %r{ svnlook #{REPOS} #{REV} }
となっている部分を、
svnlook = %r{ /bin/env LANG=ja_JP.eucJP /usr/bin/svnlook #{REPOS} #{REV} }
を変更することで解決。
ちなみに、svnlookをフルパスで指定しているのは、たぶん、LANGが設定されていないということはPATHも設定されていない可能性が高いため。
#ここらへんはあんまり詳しくないので、とりあえず動けばよしと。
たぶん、Debianの設定をうまくすれば回避できるだろうけれど、とりあえず以上でいいことにしました。