Trac with Multi SVN Repos
複数の SVN リポジトリを 1 つの Trac で管理する方法です。元ネタは 2009-07-14 に対応された Multiple Repository Support for 0.12 です。multirepos のソースコードは edgewall の sandbox 内に公開されています。インスコ環境は ubuntu です。私は動作環境については、mysql, mod_python を利用していますが、sqlite でも mod_wsgi でも同じように動作すると思います。また、trac と SVN のユーザは一元的に LDAP で管理します。
LDAP のインストールと設定
- LDAP のインストール (Ubuntu の場合)
sudo apt-get install slapd ldap-utils sudo dpkg-reconfigure slapd
- LDAP の設定とユーザの追加など
Ubuntu の LDAP ページなど、各 Linux ディストリのページがオヌヌメ
SVN のインストールと設定
- SVN のインストール
sudo apt-get install subversion libapache2-svn subversion-tools
- SVN リポジトリの作成 (複数個ね)
sudo -u www-data svnadmin create /var/svn/repo1 sudo -u www-data svnadmin create /var/svn/repo2 sudo -u www-data svnadmin create /var/svn/repo3 sudo -u www-data svnadmin create /var/svn/repo4 sudo -u www-data svnadmin create /var/svn/repo5
- Apache の設定と認証の LDAP 統合
sudo a2enmod dav_svn sudo a2enmod authnz_ldap cd /etc/apache2/mods-enabled sudo vi dav_svn.conf
以下のように編集します<Location /svn> DAV svn SVNParentPath /var/svn SVNListParentPath on AuthType Basic AuthBasicProvider ldap AuthLDAPURL "ldap://localhost:389/ou=people,dc=example,dc=com?uid" AuthzLDAPAuthoritative off Require valid-user # チェックアウトは誰でもできるけど、コミットだけ絞りたいときは Require valid-user を以下のようにする # <LimitExcept GET PROPFIND OPTIONS REPORT> # Require valid-user # </LimitExcept> </Location>
- Apache の設定を適用する
sudo /etc/init.d/apache2 reload
- http://localhost/svn/ とかにアクセス可能であれば正常にインストールされている。また subversion client からも同様の URL でチェックアウトできる
Trac のインストールと設定
- 必要なパッケージをインストールするなどしておく (Genshiの最新版が必要です)
sudo apt-get install libapache2-mod-python python-setuptools darcs unzip wget sudo easy_install -U "Genshi==dev"
- svn より最新のソースコードを取得します (edgewall の svn って遅いですよね・・・)
cd /tmp/ svn co http://svn.edgewall.com/repos/trac/sandbox/multirepos
- セットアップを実行します
sudo python setup.py install
- ディレクトリー群の作成
sudo mkdir /var/trac /var/trac/htdigest /var/cache/egg
- trac-env の作成
sudo -u www-data trac-admin /var/trac/sample permission add admin TRAC_ADMIN
- trac の設定
sudo -u www-data trac-admin /var/trac/sample permission add admin TRAC_ADMIN
以下の箇所を編集 (hg を使いたい場合はプラグインを入れて repository_type = hg にすればok。あと svn と hg を共有したいときは repo1.type = hg、 repo2.type = svn みたいに個別に設定もできる)[trac] repository_dir = /var/svn/repo1 repository_type = svn [repositories] repo1.dir = /var/svn/repo2 repo2.dir = /var/svn/repo3 repo3.dir = /var/svn/repo4 repo4.dir = /var/svn/repo5
編集を適用sudo trac-admin /var/trac/sample repository resync "(default)" sudo trac-admin /var/trac/sample repository resync repo2 sudo trac-admin /var/trac/sample repository resync repo3 sudo trac-admin /var/trac/sample repository resync repo4 sudo trac-admin /var/trac/sample repository resync repo5
- commit hook に以下を追加
sudo trac-admin /var/trac/sample changeset added "(default)" $REV sudo trac-admin /var/trac/sample changeset added repo2 $REV sudo trac-admin /var/trac/sample changeset added repo3 $REV sudo trac-admin /var/trac/sample changeset added repo4 $REV sudo trac-admin /var/trac/sample changeset added repo5 $REV
- apache の設定
sudo vi /etc/apache2/sites-available/trac
以下の記述を追加<Location "/trac"> SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir "/var/trac/" PythonOption TracUriRoot /trac SetEnv PYTHON_EGG_CACHE "/var/cache/egg" </Location> <LocationMatch "/[^/]+/login"> AuthType Basic AuthBasicProvider ldap AuthLDAPURL "ldap://localhost:389/ou=people,dc=example,dc=com?uid" AuthzLDAPAuthoritative off Require valid-user </LocationMatch>
apache の設定を適用するsudo a2enmod auth_digest sudo a2ensite trac sudo /etc/init.d/apache2 reload
- http://localhost/trac/sample にアクセスすれば見れますよ。実際の動作させると Browse Source がこんなんになります。リポジトリがいっぱいあって Trac を使ってみたい方はぜひ。
送信者 Surgo |
コメント
コメントを投稿