« シェルスクリプトでも・・・ | メイン | データはSQLiteで »

January 10, 2005

WebSVNのセットアップ

Memo/WebSVNを元に設定を行ったが、より詳細な設定を下記にメモ。
なお、サーバーはLinux (Fedora Core 3)を使用している。

WebSVNドキュメントから適切なtar.gzをDL。
適当なディレクトリに展開した後、include/distconfig.inc を include/config.inc にリネーム。
include/config.inc を以下のように編集する。

まず、--- PLATFORM CONFIGURATION --- で、各種コマンド パスの設定を行う。
例えば、以下のような感じ。
$config->setSVNCommandPath("/usr/bin"); // svnlook
$config->setDiffPath("/usr/bin"); // diff
$config->setEnscriptPath("/usr/bin"); // enscript
$config->setSedPath("/bin"); // sed
$config->setTarPath("/bin"); // tar
$config->setGZipPath("/bin"); // gzip

コマンド(/usr/bin/svnlookなど) ではないので注意。
わからない場合は、"which コマンド" で調べる。

次は、 --- REPOSITORY SETUP ---
Subversionで管理しているリポジトリを追加する。
$config->addRepository("myrep", "/home/svn/myrep");

次は、 --- LANGUAGE SETUP ---
include("languages/japanese-utf8.inc"); // (FedoraCore/Max OS X/BeOS)
を有効にし、次のようにエンコーディングを設定する。
$config->setInputEncoding("UTF-8");
$config->setOutputEncoding("UTF-8");

次は、 --- COLOURISATION ---
$config->useEnscript(); を有効にする。

以上で表示できるようになるが、ログメッセージが文字化けする。
対策を探したところ、以下のようにすると良いようだ。
まず、"/usr/local/WebSVN/bin/"というディレクトリを作る。

/usr/local/WebSVN/bin/svnlook というシェルスクリプトを書く。
内容は次の通り。
--------------------------------------------
#! /bin/bash
export LANG=japanese
/usr/bin/svnlook "$@"
--------------------------------------------

svn へのシンボリックリンクを次のようにして作る。
ln -s /usr/bin/svn /usr/local/WebSVN/bin/svn

include/config.inc のSVNCommandPath の設定を次のように変更する。
$config->setSVNCommandPath("/usr/local/WebSVN/bin");

以上でログメッセージの文字化けは回避できる。
が、ソースコード中のShift_JISなどの日本語は文字化けしてしまう。
上述のsvn をシンボリックリンクではなく、以下のようなシェルスクリプトにすることで回避できるが、バイナリファイルが壊れてしまうと言う問題が発生する。
--------------------------------------------
#! /bin/bash
/usr/bin/svn "$@" | nkf -w
--------------------------------------------

これは、ソースに手を加えなければ回避できなさそうだったので、コードを追ったところ、include/svnlook.inc の listFileContentsに修正を加えることで回避できた。
修正個所は次の通り
if( $config->useEnscript ) の中
$cmd = quoteCommand( ... とある次の行に
"/usr/bin/nkf -w | ".
を追加する。
なお、nkf のパスは環境に合わせて設定する必要がある。

configclass.inc にnkfの設定を追加して、有効なら上述の行をコマンドに追加するようにすれば、汎用的になるだろうけど、とりあえずこのままでよしとした。
今度気力がある時に、本体の方へマージしてくれーって送ろうかな。
--------------------------------------------
以上の設定で使えるようになるのだが、SELinuxを有効にすると使えなくなる。
まあ、コマンドを呼び出したり、テンポラリファイルを作ったりといろいろやっているので、専用のポリシーを作らないと厳しそうだ。
これは、今度頑張ることにする。

投稿者 Takenori : January 10, 2005 02:10 PM

Trackback Pings

このエントリーのトラックバックURL:
http://blog.kaede-software.com/mt-tb.cgi/438

コメント

Total : Today : Yesterday :