Subversion、tracの覚え書き


Subversionとは

SubversionはSubversionのページからダウンロード出来ます。

Subversionは、CVSの後継として開発されたバージョン管理ツールです。Subversionは、以下のような特徴を持ちます。

また、windows環境のコマンドラインツールもちゃんと日本語でメッセージが表示されますし、エクスプローラのシェル拡張機能である、TortoiseSVNも日本語言語パックが提供されています。

(2006/07/09)

Subversionのメモ

まずは、Subversionのリポジトリを作成方法。リポジトリの作成には、svnadminコマンドを使います。また、この時にリポジトリの形式が、fsfsという独自ファイル形式とBSD DBの2種類が選択出来ます。ネットを調べる限り、BSD DBのリポジトリが壊れたという話がいくつか見つかり、fsfsが壊れたという話が見つからないので、お勧めはfsfs形式です。という事で、/var/lib/svn/hogeのディレクトリへ、fsfs形式のリポジトリを作成する場合は、下記のようにコマンドを入力します。

svnadmin create --fs-type fsfs /var/lib/svn/hoge

Apacheからアクセスするように設定する場合は、下記のような設定をします。ここでは、個別のリポジトリに対してアクセス設定をするのではなく、複数のリポジトリを配下に置くディレクトリを公開する方法を書きます。

文字だとわかりにくいですが、例えば/var/lib/svnディレクトリ以下にhoge1、hoge2というリポジトリがある時に、hoge1、hoge2それぞれに設定を行うのではなく、/var/lib/svn以下のフォルダをまとめて公開すると言う設定です。

また、合わせて読み取りは全ユーザに対して権限を与え、更新操作についてはベーシック認証を使い認証を行うようにします。

Apacheの設定ファイル(httpd.conf、Debian sargeの場合は/etc/apache2/mods-available/dav_svn.conf)、に下記を記述します。

このとき、SubversionのリポジトリディレクトリへApacheのユーザが書き込み権限を持っている用設定する事を忘れないで下さい。私の場合は、DebianなのでApacheのユーザがwww-dataであるため、Subversionのリポジトリディレクトリのグループをwww-dataに変更し、グループに対して書き込み権限を与えるようにしています。

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
<Location /svn>
  DAV svn
  SVNParentPath /var/lib/svn

  # our access control policy
  AuthzSVNAccessFile /var/lib/svn/.htsvn_access

  # try anonymous access first, resort to real
  # authentication if necessary.
  Satisfy Any
  Require valid-user

  # how to authenticate a user
  AuthType Basic
  AuthName "Subversion repository"
  AuthUserFile /var/lib/svn/.htsvn_user
</Location>

次に、htpasswd コマンドを使ってベーシック認証用の/var/lib/svn/.svn_userファイルを作成します。

次に、Subversionのアクセス権設定ファイル.htsvn_accessファイルを以下の用に記述します。ここでは、全てのリポジトリに対し全ユーザに読み取り権限を与え、testリポジトリにはdevelopersグループに登録されたユーザおよび、user3のユーザに読み書き権限を与えます。

[groups]
developers = user1, user2


[/]
* = r

[test:/]
user3 = rw
@developers = rw

(2006/07/09)

tracのメモ

tracは、Subversionと連動するプロジェクト管理Wikiページ、バグトラックツール提供ツールという感じです。では、早々tracの環境の作成を。まず、tracのプロジェクトを初期化するため、

trac-admin /var/lib/trac/hoge initenv

と入力します。

また、apacheの設定ファイルに(httpd.confまたは、Debian sargeの場合は/etc/apache2/sites-availablesへtracというファイルを作り、/etc/apache2/sites-enable/001-tracへシンボリックリンクを張る)、下記の記述を追加します。

この設定では、/var/lib/trac以下へ、tracのプロジェクトディレクトリを配置します。また、作成したtracリポジトリで、SQLiteを選択している場合は、db/trac.dbファイルへ、apacheのユーザが書き込める権限を与える事を忘れないでください。

また、LocationMatchへの記述は、tracへユーザ認証機能を追加するための記述です。ここでは、svnのディレクトリと同一のユーザファイルを使うように設定しています。

Alias /trac "/usr/share/trac/htdocs/"

<Location "/projects">
        SetHandler mod_python
        PythonHandler trac.web.modpython_frontend
        PythonOption TracUriRoot /projects
        PythonOption TracEnvParentDir /var/lib/trac
</Location>

<LocationMatch "/projects/[a-zA-Z0-1_-]+/login">
        AuthType Basic
        AuthName "Trac"
        AuthUserFile /var/lib/svn/.htsvn_user
        Require valid-user
</LocationMatch>

commitメッセージでチケットをクローズする設定。svnのリポジトリディレクトリ、hooksディレクトリへ、post-commitという名前で下記の内容のファイルを作成します。また、/usr/share/doc/trac/contrib/trac-post-commit-hooks.gzファイルを展開して、先ほどのhooksディレクトリへ配置します。また、他環境では問題ないと思うのですが、Debian sargeで、Subversion 1.3.1を入れた場合に日本語ロケールで正しく動作しないため、http://vimrc.hp.infoseek.co.jp/svn_commit_jp.htmlから、svnlog2utf8を取得し、svnlog2utf8.rbという名前で、/usr/local/bin/へ置いておき、日本語を処理しています。

#!/bin/sh

# post commit scripts

export LANG=C

REPOS="$1"
REV="$2"
LOG=`/usr/bin/svnlook log -r $REV $REPOS | /usr/local/bin/svnlog2utf8.rb`
AUTHOR=`/usr/bin/svnlook author -r $REV $REPOS | /usr/local/bin/svnlog2utf8.rb`
TRAC_ENV='/var/lib/trac/pgmecab'
TRAC_URL='http://www.emaki.minidns.net/projects/pgmecab/'

/usr/bin/python /var/lib/svn/pgmecab/hooks/trac-post-commit-hook \
 -p "$TRAC_ENV"  \
 -r "$REV"       \
 -u "$AUTHOR"    \
 -m "$LOG"       \
 -s "$TRAC_URL"

WebAdminのインストール

WebAdminとは、trac-adminの機能のいくつかをtracのWeb画面から操作出来るようにするtracプラグインです。Debian sargeの場合は、python2.3-setuptoolsが古くてインストールが失敗するらしいので、まず下記のコマンドでpython2.3-setuptoolsをアンインストールし、

dpkg -r python2.3-setuptools

以下の方法で、ez_setupツールをインストールします。

wget http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py

その後、WebAdminのページから対応したバージョンをダウンロードし、xxx.egg.zipとなっているのを、xxx.eggへリネームします。その後、

python ez_setup.py TracWebAdmin-xxxxx.egg

として、TracWebAdminツールをインストールします。その後、trac.iniへ

[components]
webadmin.* = enabled

を追加し、下記のコマンドを使いuserへ、TRAC_ADMIN権限を与えます。

trac-admin hoge permission user TRAC_ADMIN

Debian sargeの覚え書き

Debian sargeでダウンロード出来るSubversionは、1.1.xのバージョンです。が、このバージョンではsvn lockが使えません。個人的にこの機能をどうしても使いたかったので、sargeでSubversionの新しいバージョンを使う方法を書いておきます。インストールは自己責任でお願いします。

下記のDebian Backportsの項目を/etc/apt/source.lstファイルへ追加し、apt-get updateを行ったあとsubversionをインストールすると、1.3.1をインストール出来ます。

deb http://deb.stosberg.net/dists/sarge/main/binary-i386/subversion/ ./
deb-src http://deb.stosberg.net/dists/sarge/main/binary-i386/subversion/ ./

trac 0.9.3 jpバージョンをインストールするには、下記の行を/etc/apt/source.listへ追加します。

deb http://people.debian.org/~tora/deb ./ 
deb-src http://people.debian.org/~tora/deb ./ 

が、上記のSubversion 1.3.1のパッケージをインストールすると下記のtracパッケージがpython2.3-subversionを要求するのですが、これが上記パッケージに含まれるpython-subversionと競合し、しかもpython2.3-subversionではSubversion 1.3.1のリポジトリを参照出来ないという状況が発生してしまいます。そのため、私は

  1. Subversion 1.3.1 python-subversion subversion-toolsをインストール
  2. tracをインストールし、競合のため一度python-subversion、subversion-toolsをアンインストールし、python2.3-subversionをインストール
  3. dpkg --force-depends -P python2.3-subversionとコマンドラインで入力し、依存関係を無視してpython2.3-subversionをアンインストール
  4. http://deb.stosberg.net/dists/sarge/main/binary-i386/subversion/のサイトからpython-subversion_1.3.1-2dest0_i386.debをダウンロードし、dpkg -i でインストール。
  5. http://deb.stosberg.net/dists/sarge/main/binary-i386/subversion/のサイトからsubversion-tools_1.3.1-2dest0_all.deb をダウンロードし、dpkg -i でインストール。

という手順で依存関係を無視して必要な環境を作りました。

上記の手順は、動作保証をする物ではありません。自己責任でお願いします。

(2006/07/09)

Debian etchの覚え書き

日本語版の、tracを入れたかったのですがDebianにあるtracは、英語の0.10.3。日本語リソースなるパッケージが入っていますが、悲しいかのそのバージョンは、0.8.3になっている・・・。と言うことで、

trac-jpにある、設定に従い、/etc/apt/source.listを編集して、trac-jp 0.10.3をインストールしました。

ちなみに、バージョンアップは

trac-admin /hoge upgrade
trac-admin /hoge wiki upgrade

の呪文で実行します。

(2007/08/27)