SVNサーバを構築してみた

今回はSubversionの話。
apacheWebDAVでやる。
 
例えば、こんなバーチャルドメインを作ってSVN用にしたとする。
https://svn.xxx.jp/
 
個々リポジトリのURLはこんな感じになるのが理想。
https://svn.xxx.jp/project1/{trunk,tags,branches}
https://svn.xxx.jp/project2/{trunk,tags,branches}
https://svn.xxx.jp/project3/{trunk,tags,branches}
 

インストール

yum install subversion
yum install mod_dav_svn

 

設定

ここを参考に。
ApacheでSVNのアクセス制御とリポジトリ一覧表示を同時にやる - ある異邦人の技術メモ
 
そのままの設定じゃ動かなかったので、こんな設定にしてみた。
.authzは書き方チェックもかねて。
 

httpd.conf
<Location />
	DAV svn
	SVNListParentPath on
	SVNParentPath /var/www/virtual/svn
	SVNAutoversioning on
	AuthType Basic
	AuthName "Subversion Repository"
	AuthUserFile /var/www/virtual/svn/.htpasswd
	Require valid-user
</Location>
<LocationMatch /.+>
	AuthzSVNAccessFile /var/www/virtual/svn/.authz
	Satisfy Any
</LocationMatch>

 

.authz
[groups]
root = xxx

[/]
@root = rw

[svn-test:/]
* =
@root = rw

[new-repo:/]
guest =

 

リポジトリルートをチェックアウトできない

new-repoってリポジトリを作った場合。
最後にちゃんと"/"をつけてCOしようとしても、こうなっちゃう。
あんまりSVN使った事ないから解らないけど、もしかしてこれが正しい動きなのかな…。

svn: リポジトリは恒久的に 'http://svn.xxx.jp/new-repo/' へ移動しました。relocate (参照 URL の変更) を実行してください

 
file://で作ってから、/new-repo/trunkをCO。
今のところこれしか思いつかない。
どうしたものか…。

[root@eth0 ~]# svn mkdir -m "create trunk" file:///var/www/virtual/svn/new-repo/trunk
リビジョン 1 をコミットしました。
[root@eth0 ~]# svn mkdir -m "create tags" file:///var/www/virtual/svn/new-repo/tags
リビジョン 2 をコミットしました。
[root@eth0 ~]# svn mkdir -m "create branches" file:///var/www/virtual/svn/new-repo/branches
リビジョン 3 をコミットしました。

 

環境

[root@eth0 ~]# cat /etc/redhat-release
CentOS release 5.3 (Final)
[root@eth0 ~]# httpd -version
Server version: Apache/2.2.3
Server built:   Jan 21 2009 22:01:41
[root@eth0 ~]# svn --version
svn, バージョン 1.6.4 (r38063)
   コンパイル日時: Aug 12 2009, 02:42:28

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

以下のリポジトリアクセス (RA) モジュールが利用できます:

* ra_neon : Neon を利用して WebDAV (DeltaV) プロトコルでリポジトリにアクセスするモジュール。
  - 'http' スキームを操作します
  - 'https' スキームを操作します
* ra_svn : svn ネットワークプロトコルを使ってリポジトリにアクセスするモジュール。
  - Cyrus SASL 認証を併用
  - 'svn' スキームを操作します
* ra_local : ローカルディスク上のリポジトリにアクセスするモジュール。
  - 'file' スキームを操作します