*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
}}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS