Bazaar on Redmine でコメントが「?」になる件の応急対応
対象: Redmine-0.8.7, Bazaar 2.0.2, on Ubuntu 9.10
ファイル名、コミットメッセージのマルチバイト対応が良好、とのことで Bazaar を使い初めました。
同じく最近使い初めた Redmine の SCM 連携機能で、Bazaar との連携機能を使ってみたところ、コミットコメント中のマルチバイト部分(日本語)が「?」になって表示されていまいました。
色々調査してみたところ、Redmine を ホストしている Webサーバの locale が C で動いていることが原因だとわかりました。
locale が C なので、Redmine から呼び出された Bazaar はコメントのマルチバイト部分変換不可文字として「?」に変換してしまいます。
Redmine はそれを UTF-8 として扱って「?」のまま出力していたというわけです。
とりあえずの対応として、Redmine の
lib/redmine/scm/adapters/bazaar_adapter.rb
の
BZR_BIN = "bzr"
を
BZR_BIN = "env LANG=ja_JP.UTF-8 bzr"
にしたところ、正常に表示されるようになりました。
Redmine のサイト全体の設定に「コミットメッセージのエンコーディング」というのがありますが、これを変更しても効果ありませんでした。この設定は、コミットコメントをバイト列として扱うような SCM 用の設定ということなのでしょう(多分……)。
「コミットメッセージのエンコーディング」の設定に合わせた locale で bzr を起動するようにするのが本来的対応なのでしょうか。
今思い付いたんですが、Redmine は bzr の実行結果の文字列をパースして表示しているようなので、locale の変更による副作用が発生することもありえます。
env LANG=en_US.UTF-8 bzr
が正解だったかもしれないな……。今度やってみます。
2009-12-09 追記:"env LANG=en_US.UTF-8 bzr" に変更しましたが、得に問題なく動いていますので、こちらを使うことにしました。