Bazaar on Redmine でコメントが「?」になる件の応急対応

対象: Redmine-0.8.7, Bazaar 2.0.2, on Ubuntu 9.10

ファイル名、コミットメッセージのマルチバイト対応が良好、とのことで Bazaar を使い初めました。

同じく最近使い初めた RedmineSCM 連携機能で、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" に変更しましたが、得に問題なく動いていますので、こちらを使うことにしました。

類似の問題: Subversionのリポジトリ内で日本語を使うとRedmineで参照できません。