Subversionの準備
Subversion February 18th, 2007
結局、理想的なウェブアプリの開発環境はこんな感じに。
Subversionのレポジトリのディレクトリ構成は、伝統的にこんな風になっている:
$ mkdir OurGreatApp $ mkdir OurGreatApp/trunk $ mkdir OurGreatApp/branch $ mkdir OurGreatApp/tags
名前の通り、trunk(主幹)が現在まさに開発中のセット一式。開発が完了したら、svn copyでtagsディレクトリ以下に収まる。こうするとtagsにはリリース番号が割り当てられたセット一式が入る。OurGreatApp/tags/1.0/とか、OurGreatApp/tags/1.1/とか。branchは適時必要に応じて作られる。カスタマイズ案件があったときや、次期メジャーバージョンの開発など。
hooks用のスクリプトで実装するのは
pre-commit
- コメントの書式チェック
- コミットされたスクリプトの構文チェック
- コーディング規約に則ったチェック
post-commit
- レポジトリのパスに応じてバグトラッカーに変更内容を投稿
- テスト管理プログラムのDBに変更されたスクリプトの内容を投稿
- リリース用ファイルリストに必要に応じて追記
PHPで記述するとこんな感じ。
#!/bin/env php <?php $rev = $argv[2]; //リビジョン $path = $argv[1]; //コミットされたファイルのパス $log = `svnlook log $rev $path`; //コメント(UTF-8) $author = `svnlook author $rev $path`; //コミットした人 $date = `svnlook date $rev $path`; //日時 //do something ?>
post-commitのところは、もっとシンプルにBTSに統合されるといいのだろうけれども、そこまでは手が回っていない。
これで、変更があった場合には記録が全部BTSに入るので、BTSのステータスが完了になるまでリリース出来なくなり、テストが漏れることを防いでくれる。
BTSには影舞を使っている。メンテナンスを考えると、PHPで書かれたフリーのBTSで優秀なのがあればいいのだが、なかなか見当たらない。