CommitBitの使い方
CommitBitというのは、JiftyベースのSubversionリポジトリ管理ツール。リポジトリ管理ツールといってもTracやSVN::Webのようなコミットを管理するものとは違って、リポジトリにアクセスできるユーザのメールアドレスとかパスワードを管理するもの。実際の動作例はCommitBitのサイト自体をご覧いただくとして、一年ほど前に登場したときちらと触ったきりだったのですが、AliasことAdam Kennedy氏が春先にリポジトリをぶっ壊したとき、最新版のJiftyだとCommitBitが動かないと嘆いていたのは聞いていたので、なにか敷居の高い部分でもあるのかなとは思っていたのです。
が、実際に試してみたところ、設定さえしてしまえば、Windows上でもわりとあっさり動くのですね。
ただ、その設定が必要な項目がいささかわかりづらいので、以下、「とりあえず動く」というところまでのポイントをまとめておきます。
Subversion(と、必要ならApache2)をインストールする
していない人がCommitBitを使おうとは思わないと思いますが、念のため。
Jiftyをインストールする
インストールが成功する可能性は0%だそうですが(ぇ、まあ、気合いと根性でなんとかしてください。
Jifty::Plugin::Loginもインストールする
CPANからは入れられません。Jiftyのtarballを落としてくるか(CPAN経由でインストールした直後なら、.cpan/buildディレクトリの中にあるはず)、オフィシャルのリポジトリから落としてくるかして、plugins/Login/の中に入っているJifty::Plugin::Login関係のモジュールをインストール(するか、PERL5LIBに登録)しておきます。
CommitBitを落としてくる
CPANからtarballを落としてきます。最新版のJifty::DBIとは一部互換性がないので、直接CPANインストーラ経由でインストールしようとしてもうまくいきません(し、JiftyアプリをCPANから直接インストールするのはいずれにしてもおすすめしません)。
svn headのは作りかけのまま止まっているとのこと。表面的には動きますし、いろいろ改善されていてよさげなんですが、パスワードまわりの処理がまだ完全ではないようなので、おとなしくCPAN版を使っておきましょう。
lib/CommitBit/Model/User.pmを修正する
これだけ。
--- lib/CommitBit/Model/User.pm.org 2006-10-02 04:52:54.000000000 +0900 +++ lib/CommitBit/Model/User.pm 2007-08-31 08:30:45.767750000 +0900 @@ -7,7 +7,7 @@ use CommitBit::Record schema { column 'nickname' => type is 'text'; - column 'email' => type is 'text', is 'distinct', is 'immutable', is 'mandatory'; + column 'email' => type is 'text', is distinct, is immutable, is mandatory; column 'password' => type is 'text', render_as 'password'; column 'created' => type is 'timestamp', is immutable; column admin => type is 'boolean', default is '0';
etc/config.yamlを修正する
etc/site-config.yamlを書いてもいいです。ポイントは、
framework: AdminEmail: hoge@foo.com ←追加 (中略) application: repository_prefix: (今後作成するリポジトリの親ディレクトリに修正)
の二点。WindowsのようにそのままではEmail::Send::Sendmailが動かない環境の場合はさらに
framework: Mailer: SMTP MailerArgs: - Host - smtp.foo.com
のように修正。
その他、必要に応じて Database とか Web 以下の項目(HostとかBaseURLとかPortとか)を修正してください。Production環境に持っていくときは LogLevel を WARN とか ERROR にするのも忘れずに。
データベースを作成する
> perl bin/jifty schema --setup > perl bin/create_admin --email=admin@foo.com
管理者の初期パスワードは password 固定になっているので、bin/create_admin の中身を適当に変えるか、あとでログインしたあと修正しましょう。
サーバを起動する
> perl bin/jifty server
標準のままならブラウザで http://localhost:8888/ にアクセスすればCommitBitを利用できるはずです。
リポジトリのアクセスをsvn://〜で済ます場合はこれでOKですが、http://〜を使いたい場合はもう少し手をかける必要があります。
Apache2のhttpd.confを修正する
基本的には
Include (リポジトリの親ディレクトリ)/*/conf/httpd.conf
のようなのを追加しておけばよいはず……なんですが、これ、少なくともうちではうまくいかず。なにか勘違いしているような気もしますが、あれこれ考えたくなかったので、ここではさっさとCommitBitの方をこんな風に書き換えて、
--- lib/CommitBit/Model/Repository.pm.org 2006-09-17 20:42:41.000000000 +0900 +++ lib/CommitBit/Model/Repository.pm 2007-08-31 11:29:24.909250000 +0900 @@ -241,6 +241,11 @@ return File::Spec->catdir($self->local_path, 'conf', @_); } +sub httpdconf_file_path { + my $self = shift; + return File::Spec->catdir(Jifty->config->app('httpdconf_prefix'), @_); +} + sub write_svnserv_config { my $self = shift; @@ -300,7 +305,7 @@ EOF with_write_lock { - open my $fh, '>', $self->svnconf_file_path('httpd.conf') or die $@; + open my $fh, '>', $self->httpdconf_file_path($self->name.'.conf') or die $@; print $fh $msg or die $@; close $fh or die $@; };
etc/config.yamlにも
application: httpdconf_prefix: foo/bar/repos/
とかいうのを追加。最後にhttpd.confに
Include foo/bar/repos/*.conf
しました。
あとは、タイミングを見て適当に再起動するスクリプトを用意するとか、tracやSVN::Webとも同期できるようなものを用意するとか、必要に応じて適当に改造してください。
毎回毎回「htpasswdの結果送って〜」とかやるよりはいくらか管理が簡単になる *かも* しれませんよ。