複数svnリポジトリのつくり方

複数のSVNリポジトリをhttp経由でアクセス、管理する方法まとめ。
CentOS5、subversion1.4.2、Apache2.2.3 環境で作成。
単一リポジトリで、httpが必要ないならこっち参照。

作成するリポジトリ

以下にある3つのリポジトリを作ってみます。
アカウントは自分用、開発者用(=group1)を作成します。
アカウントのない人でもtestリポジトリはアクセス可能とします。


・myリポジトリ
自分専用の設定ファイルを保存する。.vimrc、.zshrcなどなど。
自分では読み書き可能。group1も読み込みは可能。それ以外の人は読み書き不可。


・devリポジトリ
皆で何かを開発する為に使用する。
自分は読み書き可能。group1も読み書き可能。それ以外の人は読み書き不可。


・testリポジトリ
SVN練習用のリポジトリSVN未体験、不慣れな人の為に。
全ての人が読み書き可能。

リポジトリ パス アクセス制限
my /home/svnadmin/svn/my 自分:rw, group1:r, それ以外:アクセス禁止
dev /home/svnadmin/svn/dev 自分:rw, group1:rw, それ以外:アクセス禁止
test /home/svnadmin/svn/test 全て:rw

(r...読み込み、w...書き込み)

必要なプログラムをインストールする

# yum install httpd
# yum install subversion
# yum install mod_dav_svn

リポジトリを作成

リポジトリを作成し、Apacheが読み書きできるようにする。

# mkdir -p /home/svnadmin/svn
# svnadmin create /home/svnadmin/svn/my
# svnadmin create /home/svnadmin/svn/dev
# svnadmin create /home/svnadmin/svn/test
# chown -R apache:apache /home/svnadmin/svn/my/
# chown -R apache:apache /home/svnadmin/svn/dev/
# chown -R apache:apache /home/svnadmin/svn/test/

Apacheの設定

/etc/httpd/conf.d/subversion.conf を以下のように設定する。
SVNParentPathには、リポジトリの親ディレクトリを指定する。

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /svn>
  DAV svn
  SVNListParentPath on
  SVNParentPath /home/svnadmin/svn #リポジトリの親ディレクトリ

  Satisfy Any #アカウントのない人でもアクセス可能にする
  AuthType Basic
  AuthName "Authorization Realm"
  AuthUserFile /home/svnadmin/svnconf/htpasswd #ユーザアカウント設定ファイル
  AuthzSVNAccessFile /home/svnadmin/svnconf/svn-access #アクセス制限設定ファイル
  Require valid-user

</Location>

アカウント作成

設定ファイルを置くディレクトリを作成する。

# mkdir -p  /home/svnadmin/svnconf

自分のアカウント(hayori)、開発者アカウント(developer1, developer2)を作成する。

# htpasswd -c /home/svnadmin/svnconf/htpasswd hayori
# htpasswd /home/svnadmin/svnconf/htpasswd developer1
# htpasswd /home/svnadmin/svnconf/htpasswd developer2

アクセス制限ファイルを作成

/home/svnadmin/svnconf/svn-access

[groups]
me = hayori
group1 = developer1,developer2
[/]
* = r
[my:/]
* =
@me = rw
@group1 = r
[dev:/]
* =
@me = rw
@group1 = rw
[test:/]
* = rw

"* = "は全ての人、グループは先頭に@をつける。

Apache再起動

# /etc/init.d/httpd restart 

動作確認

以下のアドレスに、ブラウザやSVNクライアントで意図通りにアクセスできるか確認する。
http://localhost/svn/my
http://localhost/svn/dev
http://localhost/svn/test

Subversionの使い方

使い方は、以下の本一冊読めば事足ります。薄めで1日あれば読める。オススメです。

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)

SVNクライアントはWindowsならTortoiseSVNがオススメ。
TortoiseSVNのインストールと設定