2004年12月23日

WebSVN -文字化けとの闘い-

WebDAV+Subversionが落ち着いたので、今度はブラウザで簡単に履歴が追えるようにWebSVNを入れてみることにしました。

公式サイトは↓

ダウンロード方法はいくつかありますが、私ははWebDAVで公開されているリポジトリからSubversionを用いてローカルに持ってきました<折角Subversion使ってるんですしね(笑)

なお、このソフトはPHPで動作するため、これを動作させるサーバーにはphpのインストール先に行ってください。
(Gentooでのインストール方法はこちら。RedHat系でソースから入れるならこちら)

次はSubversionでローカルにエクスポートしたWebSVNの実行ファイル一式をapacheのドキュメントルートに展開→展開されたファイルのオーナーをapacheの実行ユーザーにchown。
(今回はSubversion関連の専用鯖でSafemodeも切っていたので、面倒なことにならないようにこうしましたが、Safemodeが有効だったりする場合は各自の環境に合わせてやってください。)

で、次にWebSVNの設定の書き換え。
ここら辺は下記のサイトを参考にさせて頂きました。

で、このように設定して実行・・・文字化け地獄(*´д⊂)

あっ、「$config->setInputEncoding」の設定変えるの忘れてた(苦笑)
なお、ここの値は「/etc/php/apache2-php4/php.ini」に

iconv.input_encoding = EUC-JP
iconv.internal_encoding = EUC-JP
iconv.output_encoding = EUC-JP
と書いておけば特に変更しなくても動きます。
(っていうか、上記サイトの最後を見落としててソース追ってphpの設定で治しちゃったんですが(爆))

でも、まだコメントが「?\134」とか言う感じで文字化けしてますし、Shift-JISでコミットされたソースもShift-JISのまま表示されてしまいます。

特に前者は「LANG=C」環境で出力が日本語なのが問題のような感じだったので

でやっているWrapparを使う方法で修正することとしました。

まず、

mkdir /usr/local/bin/websvn
ディレクトリを作成して、そこにシェルスクリプトで以下のようなシェルスクリプトを作成します
  • svnlook
    #!/bin/bash
    export LANG=japanese
    #export TTYPE=euc
    /usr/bin/svnlook "$@"
  • svn
    #!/bin/bash
    /usr/bin/svn "$@" | nkf -e
前者は日本語が通るように環境変数を書き換えて与えられた引数をそのままvnlookコマンドに渡すだけのシェル。
後者はsvnコマンドの出力をnkfに通すだけのシェルです。

・・・って書いてて気がついたけどsvnの出力ってバイナリーもあったような( ̄∇ ̄;
問題になるまで考えないようにしよう・・・(苦笑)

あと、

の対文字化けハックとの詳細情報表示ハックを適用させて頂いて、ひとまず完成と言うことにしました( ̄▽ ̄)ノ

って、あんまり文字化け関連のドキュメントが無かったのでソース追っての作業で忙しい中、半日ぐらいかけちゃいましたが(苦笑)<スケジュールどうやって帳尻合わせようかなぁ・・・

Posted by Takuchan at 2004年12月23日 00:22 | トラックバック(0)