*Subversion + Trac [#o724c053]
-ディレクトリ構成~
#pre{{
/Users/&color(red){user};/var
+--svn
| +--pj ・・・・ (1) http://eggplant.ddo.jp/svn/pj/
|
+--trac
+--pj ・・・・ (2) http://eggplant.ddo.jp/trac/pj/
}}
-Subversion~
Snow Leopaed に付属。~
~
-trac~
インタアクト株式会社さんがTracの日本語版を配布していますので、それを使わせていただきます。~
http://www.i-act.co.jp/project/products/products.html~
の一番したのリンクからTrac-0.11.5.ja1 をダウンロードします。
~
**Subversion [#d3d9e693]
-svn レポジトリ pj の作成~
#pre{{
$ mkdir -p /Users/&color(red){user};/var/svn/pj
$ svnadmin create /Users/&color(red){user};/var/svn/pj
$ sudo chown -R www:www /Users/&color(red){user};/var/svn
}}
-svnのweb設定~
192.168.1.* からはアクセスフリー、それ以外からはdigest認証によるアクセス制限をかける。~
--/etc/apache2/users/&color(red){user};.conf へ下記を追記~
#pre{{
LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so
<Location "/svn">
DAV svn
SVNParentPath /Users/&color(red){user};/var/svn
AuthType Digest
AuthName "Realm"
AuthUserFile /Users/&color(red){user};/.htdigest
Require valid-user
Satisfy any
order deny,allow
allow from 192.168.1.0/24
deny from all
</Location>
}}
-digest認証パスワードの設定
#pre{{
$ htdigest -c /Users/&color(red){user};/.htdigest "Realm" &color(red){user};
}}
-apache2 再起動~
**trac [#ja88242e]
-インストール
#pre{{
$ unzip Trac-0.11.5.ja1.zip
$ cd Trac-0.11.5.ja1
$ python -V
python 2.6.1
$ sudo python ./setup.py install
$ sudo cp contrib/trac-post-commit-hook /Users/&color(red){user};/var/svn/pj/hooks/
$ sudo chown www:www /Users/&color(red){user};/var/svn/pj/hooks/trac-post-commit-hook
}}
※Genshiやsetuptoolsなんかがネットワーク経由で自動インストールされるようです。~
-trac プロジェクト pj の作成
#pre{{
$ mkdir -p /Users/&color(red){user};/var/trac
$ trac-admin /Users/&color(red){user};/var/trac/pj initenv
Project Name [My Project]>
Database connection string [sqlite:db/trac.db]>
Repository type [svn]>
Path to repository [/path/to/repos]> /Users/&color(red){user};/var/svn/pj
…省略…
Congratulations!
$ sudo chown -R www:www /Users/&color(red){user};/var/trac
}}
-文字コードをutf-8に設定~
--trac.iniの編集~
#pre{{
$ cd /Users/&color(red){user};/var/trac/pj
$ diff -urpN conf/trac.ini~ conf/trac.ini
--- conf/trac.ini~ 2010-01-01 14:48:06.000000000 +0900
+++ conf/trac.ini 2010-01-01 14:50:35.000000000 +0900
@@ -165,7 +165,7 @@ base_url =
check_auth_ip = false
database = sqlite:db/trac.db
debug_sql = False
-default_charset = cp932
+default_charset = utf-8
htdocs_location =
ignore_auth_case = false
mainnav = wiki,timeline,roadmap,browser,tickets,newticket,search
}}
-tracのweb設定~
--mod_pythonのインストール~
---mod_python-3.3.1.tgz~
下記より、mod_python-3.3.1.tgzを取得~
http://httpd.apache.org/modules/python-download.cgi ~
---buiid
#pre{{
$ tar vxfz mod_python-3.3.1.tgz
$ cd mod_python-3.3.1
$ ./configure
$ make
}}
---errorで止まる~
#pre{{
connobject.c: In function ‘_conn_read’:
connobject.c:142: error: request for member ‘next’ in something not a structure or union
apxs:Error: Command failed with rc=65536
.
make[1]: *** [mod_python.so] Error 1
make: *** [do_dso] Error 2
}}
---patch当て~
#pre{{
--- src/connobject.c~ 2006-12-03 13:36:37.000000000 +0900
+++ src/connobject.c 2010-01-01 00:43:55.000000000 +0900
@@ -139,7 +139,7 @@ static PyObject * _conn_read(conn_rec *c
bytes_read = 0;
while ((bytes_read < len || len == 0) &&
- !(b == APR_BRIGADE_SENTINEL(b) ||
+ !(b == APR_BRIGADE_SENTINEL(bb) ||
APR_BUCKET_IS_EOS(b) || APR_BUCKET_IS_FLUSH(b))) {
const char *data;
}}
※「[[Snow Leopardにmod_pythonを導入:http://d.hatena.ne.jp/festango/20090919/1253319483]]」を参考~
---再build ~
#pre{{
$ make
$ sudo make install
}}
--/etc/apache2/users/&color(red){user};.conf へ下記を追記
#pre{{
LoadModule python_module libexec/apache2/mod_python.so
<Location /trac>
SetHandler mod_python
PythonDebug On
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /Users/&color(red){user};/var/trac
PythonOption TracUriRoot /trac
AuthType digest
AuthName "Realm"
AuthUserFile /User/&color(red){user};/.htdigest
Require valid-user
# Satisfy any
order deny,allow
allow from 192.168.1.0/24
deny from all
</Location>
#<LocationMatch "/trac/.*/login">
# AuthType digest
# AuthName "Realm"
# AuthUserFile /User/&color(red){user};/.htdigest
# Require valid-user
# Satisfy any
# order deny,allow
# allow from 192.168.1.0/24
# deny from all
#</LocationMatch>
}}
--apache2 再起動
-trac admin 権限の付与
#pre{{
$ sudo trac-admin /Users/&color(red){user};/var/trac/pj permission add &color(red){user}; TRAC_ADMIN
}}
**Subversion と Trac の連携 [#x297b239]
-/Users/&color(red){user};/var/svn/pj/hooks/post-comit~
#pre{{
#!/bin/sh
TRAC_ENV="/Users/&color(red){user};/var/trac/pj"
SVNLOOK="/usr/bin/svnlook"
PYTHON="/usr/bin/python"
TRAC_HOOK="/Users/&color(red){user};/var/svn/pj/hooks/trac-post-commit-hook"
export LANG=ja_JP.UTF-8
REPOS="$1"
REV="$2"
LOG=`$SVNLOOK log -r $REV $REPOS`
AUTHOR=`$SVNLOOK author -r $REV $REPOS`
${PYTHON} ${TRAC_HOOK} \
-p "$TRAC_ENV" \
-r "$REV" \
-u "$AUTHOR" \
-m "$LOG"
}}
-パーミッション設定等
#pre{{
$ sudo chown www:www /Users/&color(red){user};/var/svn/pj/hooks/post-comit
$ sudo chmod a+x /Users/&color(red){user};/var/svn/pj/hooks/post-comit
}}
**運用について [#cd823c35]
-〜/.profile
--SVN_EDITOR変数を.profileへ追記~
export SVN_EDITOR = 'emacs -nw'
--反映
. ~/.profile
-リポジトリにtrunk, branches, tagsを作成してみる~
--trac でチケット#1を発行~
&ref(issue.jpg);
--ディレクトリを作成しインポート~
インポートする際、コメントに、"fixed #1"というふうに関連するチケット番号を含めるのがミソ。~
#pre{{
$ mkdir work
$ cd work
$ mkdir trunk branches tags
$ svn import http://eggplant.ddo.jp/svn/pj -m "mkdir trunk branches tags fixed #1"
Adding trunk
Adding branches
Adding tags
Committed revision 1.
}}
--fixed #1~
"fixed #1”とすることで、svnのcommitと同期してtracのチケット#1がクローズされる。~
&ref(fixed.jpg);~
-連携キーワード~
#pre{{
fixed #xx
refs #xx
}}