Tracのプロジェクトのコピー

研究室の学生やプロジェクトごとに設定が面倒なので雛形のプロジェクトを作成してそれをコピーする。もともとの設定や雛形プロジェクトの作成方法はDebian GNU/Linux Wheezyで Trac 0.12.2を参照のこと。

前提

Subversionリポジトリの中身は以下のように作っておく。

% mkdir project
% mkdir -p project/trunk
% mkdir -p project/branches
% mkdir -p project/tags
% sudo svnadmin create /var/subversion/template_svn
% sudo svn import project /var/subversion/template_svn
% sudo chown -R www-data:www-data /var/subversion/template_svn
% sudo vi /var/subversion/template_svn/hooks/post-commit
% chmod 755 /var/subversion/template_svn/hooks/post-commit

全プロジェクトで同じDigest認証ファイルを使う予定なので

  • authenticatedグループの権限をTICKET_VIEWだけにしておく
  • developerを作成し、権限を TICKET_ADMIN、WIKI_CREATE、WIKI_MODIFY にしておく
  • TracAccountManagerのRegistrationModuleをオフにしておく(テンプレートプロジェクトにユーザーを作らせないため)

コピーの手順

% sudo cp -pr /var/trac/sites/template /var/trac/sites/project1
% sudo cp -pr /var/subversion/template_svn /var/subversion/project1_svn
% sudo trac-admin /var/trac/sites/project1 repository remove template_svn
% sudo trac-admin /var/trac/sites/project1 repository add project1_svn /var/subversion/project1_svn svn
% sudo trac-admin /var/trac/sites/project1 repository resync project1_svn
% sudo vi /var/subversion/project1_svn/hooks/post-commit

/var/subversion/project1_svn/hooks/post-commitの編集内容は以下のとおり。

#!/bin/sh
REPOS="$1"
REV="$2"
ENV="/var/trac/sites/project1"
/usr/bin/trac-admin $ENV changeset added "project1_svn" $REV

あと、Subversionリポジトリの編集権限を修正する。

% sudo vi /etc/apache2/dav_svn.authz 
[groups]
devteam = next49, bob, barry, brett

[/]
@devteam = r

# 各プロジェクトごとの設定は、
# [プロジェクトディレクトリ:制御したいディレクトリ]
# と記述する。
[project1_svn:/trunk]
next49 = rw

[project1_svn:/branches]
@devteam = rw

[project2_svn:/branches]
@devteam = r

Webブラウザから起動し、

  • プロジェクト名を新しいものに変える。
  • TracAccountManagerのRegistrationModuleをオンにする。
  • 新たなユーザーが加わったら /etc/apache2/dav_svn.authz に追記する。