CentOSにtracを入れてsvn連携するまでのメモ

下記URLのように、svnでコミットする際に、コメントにrefs #1みたいにして、tracのチケット履歴にコミットしたコメントとソースコードへのリンクを自動で入れる連携を行うまでのメモ
http://www.thinkit.co.jp/cert/article/0712/4/4/3.htm

結構はまったのでメモしときます。サポートツール系ではまると萎えるなぁ。


httpdインストール

yum -y install httpd
yum -y install mod_dav_svn


svnインストールなど

yum install subversion

リポジトリ作成
mkdir /home/hoge/svn/
cd /home/hoge/svn/
svnadmin create --fs-type fsfs repo1

svnクライアントからは、下記のようにアクセス
svn+ssh://hoge@192.168.1.2/home/hoge/svn/repo1


apacheからリポジトリを参照するために、apache権限でリポジトリが見れるようにパーミッションを変更
(mod_dav_svn経由でsvnを利用している場合は不要)
chown hoge.apache /home/hoge
chmod 750 /home/hoge


tracでphpソースコードを参照するためと、色をつけるためのインストール

yum install php php-cli
yum install enscript


tracインストール

yum -y install python 
yum -y install python-setuptools.noarch
yum -y install mod_python

wgetでhttp://www.i-act.co.jpここからtracの最新日本語ソースをダウンロード
wget http://www.i-act.co.jp/project/products/downloads/Trac-0.11.3.ja1.zip
unzip Trac-0.11.3.ja1.zip
cd Trac-0.11.3.ja1
python ./setup.py install

mkdir /var/www/trac
chown -R apache.apache /var/www/trac
htpasswd -c /var/www/.htpasswd hoge

もしyumでtracを入れる場合は、下記を参照に。
http://www.hanada.org/setting-up-trac-on-centos5


trac用httpのconfを作成

#vi /etc/httpd/conf.d/trac.conf


   SetHandler mod_python
   PythonHandler trac.web.modpython_frontend
   PythonOption TracEnvParentDir /var/www/trac/
   #PythonOption TracUriRoot /trac

   SetEnv PYTHON_EGG_CACHE /var/www/.egg-cache



   AuthType Basic
   AuthName "trac"
   AuthUserFile /var/www/.htpasswd
   Require valid-user



#/etc/rc.d/init.d/httpd start


tracプロジェクトの作成

trac-admin /var/www/trac/repo1 initenv

下記のように答える
Project Name [My Project]> repo1  ←適当なプロジェクト名
Database connection string [sqlite:db/trac.db]>  ←そのまま改行
Repository type [svn]>  ←そのまま改行
Path to repository [/path/to/repos]> /home/hoge/svn/repo1  ←svnのリポジトリパス

ここまでで、下記URLでアクセスできる
http://192.168.1.2/trac/


tracの個別設定(phpのソースコードが見れるように)

#vi /var/www/trac/repo1/conf/trac.ini

[mimeviewer]
#enscript_path = enscript  #下記に書き換え
enscript_path = /usr/bin/enscript

#php_path = php  #下記に書き換え
php_path = /usr/bin/php


tracの個別設定(phpのソースコードがutf8で文字化けする場合)

#vi /var/www/trac/repo1/conf/trac.ini

[trac]
#default_charset = cp932  #下記に書き換え
default_charset = UTF8


SVNのコミットに連携してチケットにコメントを入れる

連携スクリプトダウンロード
cd /var/www/trac
mkdir svn-contrib
cd svn-contrib
svn export http://svn.edgewall.com/repos/trac/trunk/contrib/trac-post-commit-hook
chmod 755 trac-post-commit-hook


svnのhookで連携スクリプト呼び出し設定
cd /home/hoge/svn/repo1/hooks
vi post-commit

#!/bin/sh
SVNLOOK="/usr/bin/svnlook"
PYTHON="/usr/bin/python"
export LANG=ja_JP.UTF-8

REPOS="$1"
REV="$2"
LOG=`$SVNLOOK log -r $REV $REPOS`
AUTHOR=`$SVNLOOK author -r $REV $REPOS`

${PYTHON} /var/www/trac/svn-contrib/trac-post-commit-hook \
-p "$TRAC_ENV" \
-r "$REV"    \
-u "$AUTHOR" \
-m "$LOG"


ここまでやったら、svnにコミットする際に、コメントに

refs #1
hogehogehoge

とすると、チケット1に対して、変更履歴のソースコードのリンクやコメント「hogehogehoge」が記録され、ブラウザから参照できる


ただ、今回はsvn+sshなのでhookの実行ユーザはローカルユーザであり、apacheユーザではないので、hook時にtracのdb変更などでエラーとなってしまった。下記の方法(hogeユーザのグループ権限をtracのデータに与えた)で対応(普通は必要ない)

chown apache.hoge /var/www/trac/repo1
chmod 775 /var/www/trac/repo1

chown apache.hoge /var/www/trac/repo1/db
chmod 775 /var/www/trac/repo1/db

chown apache.hoge /var/www/trac/repo1/db/trac.db
chmod 664 /var/www/trac/repo1/db/trac.db

家の中で使う環境なので、パーミッションとかオーナーはあまり気にしないことにしたw

参考
http://d.hatena.ne.jp/slywalker/20081006/1223281504
http://www.hanada.org/setting-up-trac-on-centos5
http://d.hatena.ne.jp/Tnzk/20090210/1234277380
http://blog.aklaswad.com/2007/000164.html
http://d.hatena.ne.jp/kasahi/20070717/1184691920
http://www.ibm.com/developerworks/jp/opensource/library/os-ecl-subversion/