T

Subversionの準備

結局、理想的なウェブアプリの開発環境はこんな感じに。

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で優秀なのがあればいいのだが、なかなか見当たらない。

Posted by on 2月 18, 2007 in Subversion

コメントを残す