ツイート |
Gentoo Linux上に subversion と trac の開発管理環境を構築してみました。
今回は基本的なインストールと設定に加え、subversion でコミットすると自動で trac の ticket をクローズしてくれるように設定しました。コミット時のログに closes #2 と書くと、自動で trac の 2番目の ticket をクローズします。
commit と ticket を対応させると、あるticket をクローズするのに必要だった変更を、簡単に見ることができます。これは作業の「見える化」を高め、問題解決やモチベーションの向上につながると考えられます。
更に ticket をクローズしないコミットをはじくようにもできます。ticketをクローズしないようなコミットをはじくことで、意味の分からないコミットを防止できるでしょう。
パッケージのインストール
まずパッケージをインストールします。portage では全てパッケージが準備されているので簡単です。
今回は trac を mod_python で利用したので mod_python もインストールします(確か portage の依存関係で自動的にインストールされないと思います)。
# emerge apache mod_python subversion trac
私の環境ではUSEフラグにpythonを指定していなかったので、 tracのインストール時に、 python を USE フラグに指定して clearsilver をインストールするようにエラーが出ました。
この際なので、グローバルに python を USE フラグに指定して emerge し直しました。
# emerge clearsilver trac
これでインストール作業は完了です。
subversion の設定
必要なソフトがインストールされたので、実際に設定をして動くようにしてゆきましょう。今回は test_project というプロジェクトを管理してみることにしましょう。
まず、レポジトリを作成します。既に、他の場所にある方は読みかえて下さい。
# mkdir -p /home/repos/ # svnadmin create /home/repos
次に新しいモジュールとして test_project を import してみましょう。
$ mkdir test_project $ svn import file:///home/repos/test_project -m "Initial import."
これで subversion で test_project のソースが管理できるようになりました。
trac の設定
次に、 trac で subversion と連携してプロジェクトを管理できるようにしてゆきましょう。
trac をインストールすると、 POST-INSTALL INSTRACTIONS というメッセージが表示されます。基本的には、このメッセージを頼りに設定ができるのでしょうから従っていきます。
まず、trac の環境を初期化します。
# trac-admin /var/lib/trac/testproject initenv
必要な質問に答えてゆきます。
次にBasic認証のためのパスワード・データベースを作成します。username には、あなたのユーザ名を入れて、パスワードを設定します。
# htpasswd2 -c /etc/apache2/trac.htpasswd user-name
次に cgi での設定が書いてありましたが、今回は mod_python を利用して動かしますので別の設定をしました。
まず mod_python を利用する設定を /etc/conf.d/apache2 内の APACHE"_OPTSに-D PYTHON
をを追加します。以下のようになるでしょう。
APACHE2_OPTS="-D PYTHON -D DEFAULT_VHOST"次に、 /etc/apache2/vhosts.d/00_default_vhost.conf に、以下の行を追加します。先程と同様、username には、あなたのユーザ名を入れて下さい。
<Location "/trac/testproject"> SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv /var/lib/trac/ntop PythonOption TracUriRoot /trac/ntop </Location> <Location "/trac/testproject/login"> AuthType Basic AuthName "user-name" AuthUserFile /etc/apache2/trac.htpasswd Require valid-user </Location>
以上で trac の基本的な設定は完了です。 apache を起動してみましょう。
# /etc/init.d/apache start
ブラウザで http://localhost/trac
にアクセスしてみましょう。tracの画面が表示されるはずです。
コミット時にチケットをクローズ
以上で基本的に subversion と trac を利用できますが、更に便利にしてみましょう。
ソースをコミットする時に、自動的に関連する ticket をクローズするようにして、更にはオープンなチケットをクローズしないコミットを受け入れないように設定してみましょう。
まず、trac に付属しているフックファイルを移動します。どこでもいいのですが、今回は subversion のレポジトリ内の hooks ディレクトリに置いてみましょう。
# cd /usr/share/doc/trac-*/contrib/ # cp tac-post-commit-hook.bz2 trac-pre-commit-hook.bz2 /home/repos/hooks # cd /home/repos/hooks # bzip -d *bz2
次に hook ファイルを作成します。
/home/repos/hooks 内に以下の二つのファイルを作成し、実行ファイルにします。
pre-commit
#!/bin/sh REPOS="$1" TXN="$2" TRAC_ENV='/var/lib/trac/ntop' LOG=`/usr/bin/svnlook log -t "$TXN" "$REPOS"` /usr/bin/python ${REPOS}/hooks/trac-pre-commit-hook "$TRAC_ENV" "$LOG" || exit 1
post-commit
#!/bin/sh REPOS="$1" REV="$2" LOG=`/usr/bin/svnlook log -r $REV $REPOS` AUTHOR=`/usr/bin/svnlook author -r $REV $REPOS` TRAC_ENV='/var/lib/trac/ntop' TRAC_URL='http://localhost/trac/ntop' /usr/bin/python ${REPOS}/hooks/trac-post-commit-hook \ -p "$TRAC_ENV" \ -r "$REV" \ -u "$AUTHOR" \ -m "$LOG" \ -s "$TRAC_URL" || exit 1
# chmod +x post-hooks pre-hooks
これで、コミット時にオープンなチケットへの言及がないファイルはエラーとなります。
チケットへの言及は、 closes #2
などと書きます。closesはコマンドで、#2 がオープンなチケット番号です。
コマンドはclosesの他に fixes, addresses, references, refes, re などがあります。fixes #2 and #4
や fixed #2 & #4
という書き方もできるようです。
参照
仕様書いらずの新ネットサービス構築法……仕様書なしで、ソニーの映像共有サービス「eyeVio」の構築に際し、機能要求を ticket を切ることで管理した事例を紹介。
チケット駆動開発 … ITpro Challenge のライトニングトーク (4) - まちゅダイアリー ...……タイトル通りチケット駆動の開発を紹介。