Subversion + Trac Edit

  • Subversion
    Snow Leopaed に付属。

  • trac
    インタアクト株式会社さんがTracの日本語版を配布していますので、それを使わせていただきます。
    http://www.i-act.co.jp/project/products/products.html
    の一番したのリンクからTrac-0.11.5.ja1 をダウンロードします。

Subversion Edit

  • svn レポジトリ pj の作成
    $ mkdir -p        /Users/user/var/svn/pj
    $ svnadmin create /Users/user/var/svn/pj
    $ sudo chown -R www:www /Users/user/var/svn
    
  • svnのweb設定
    192.168.1.* からはアクセスフリー、それ以外からはdigest認証によるアクセス制限をかける。
    • /etc/apache2/users/user.conf へ下記を追記
      LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so
      <Location "/svn">
        DAV svn
        SVNParentPath /Users/user/var/svn
        AuthType Digest
        AuthName "Realm"
        AuthUserFile /Users/user/.htdigest
        Require valid-user
      
        Satisfy any
        order deny,allow
        allow from 192.168.1.0/24
        deny from all 
      </Location>
      
  • digest認証パスワードの設定
    $ htdigest -c /Users/user/.htdigest "Realm" user
    
  • apache2 再起動

trac Edit

  • インストール
    $ 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/user/var/svn/pj/hooks/
    $ sudo chown www:www /Users/user/var/svn/pj/hooks/trac-post-commit-hook
    
    ※Genshiやsetuptoolsなんかがネットワーク経由で自動インストールされるようです。
  • trac プロジェクト pj の作成
    $ mkdir -p /Users/user/var/trac
    $ trac-admin /Users/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/user/var/svn/pj
    
    …省略…
    
    Congratulations!
    $ sudo chown -R www:www /Users/user/var/trac
    
  • 文字コードをutf-8に設定
    • trac.iniの編集
      $ cd /Users/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設定
  • buiid
    $ tar vxfz mod_python-3.3.1.tgz
    $ cd  mod_python-3.3.1
    $ ./configure
    $ make 
    
  • errorで止まる
    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当て
    --- 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を導入」を参考
  • 再build 
    $ make 
    $ sudo make install
    
  • /etc/apache2/users/user.conf へ下記を追記
    LoadModule python_module libexec/apache2/mod_python.so
    <Location /trac>
      SetHandler mod_python
      PythonDebug On
      PythonHandler trac.web.modpython_frontend
      PythonOption TracEnvParentDir /Users/user/var/trac
      PythonOption TracUriRoot /trac
    
      AuthType digest
      AuthName "Realm"
      AuthUserFile /User/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/user/.htdigest
    #  Require valid-user
    #  Satisfy any
    #  order deny,allow
    #  allow from 192.168.1.0/24
    #  deny from all 
    #</LocationMatch>
    
  • apache2 再起動
  • trac admin 権限の付与
    $ sudo trac-admin /Users/user/var/trac/pj permission add user TRAC_ADMIN
    

Subversion と Trac の連携 Edit

  • /Users/user/var/svn/pj/hooks/post-comit
    #!/bin/sh
    TRAC_ENV="/Users/user/var/trac/pj"
    SVNLOOK="/usr/bin/svnlook"
    PYTHON="/usr/bin/python"
    TRAC_HOOK="/Users/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"
    
  • パーミッション設定等
    $ sudo chown www:www /Users/user/var/svn/pj/hooks/post-comit
    $ sudo chmod a+x /Users/user/var/svn/pj/hooks/post-comit
    

運用について Edit

  • 〜/.profile
    • SVN_EDITOR変数を.profileへ追記
      export SVN_EDITOR = 'emacs -nw'
  • 反映
    . ~/.profile
  • リポジトリにtrunk, branches, tagsを作成してみる
    • trac でチケット#1を発行
      issue.jpg
    • ディレクトリを作成しインポート
      インポートする際、コメントに、"fixed #1"というふうに関連するチケット番号を含めるのがミソ。
      $ 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がクローズされる。
      fixed.jpg
  • 連携キーワード
    fixed #xx
    refs #xx
    

添付ファイル: filefixed.jpg 286件 [詳細] fileissue.jpg 300件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-01-01 (金) 15:36:05 (5234d)