前に書いたのはレポジトリが1つの場合の設定だった.
/var/svn/hoge, /var/svn/barといったように複数レポジトリがある場合は,dav_svn.confにSVNListParentPathを設定すると,http://hoge.com/svn/でリポジトリ一覧を表示できるようになる.
<Location /svn> DAV svn SVNParentPath /var/svn SVNListParentPath on </Location>
認証をかけたい場合は,dav_svn.authzを作成して,以下のようにAuthzSVNAccessFileの項目を設定する.
<Location /svn> DAV svn SVNParentPath /var/svn SVNListParentPath on AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd AuthzSVNAccessFile /etc/apache2/dav_svn.authz Satisfy Any Require valid-user </Location>
dav_svn.authzの書式は”[リポジトリ名:パス]”で設定するリポジトリを指定したうえで,”ユーザ名=[rw]”で各ユーザの権限を記述する.グループを指定する場合は”@グループ名”で指定する.
ユーザ名に*を指定すると任意のユーザを示すので,下の例はprivateはuser1が読み書きできるのみ.publicは誰でも読むことは可能,となる.ユーザ名はdav_svn.passwdと揃えること
[private:/] user1 = rw * = [public:/] user1 = rw * = r
けど,この形式でのアクセス制限をかけると,せっかくSVNListParentPath onにしたのに,http://localhost/svn/でレポジトリの一覧を見ることが出来なくなってしまう.
その場合は,dav_svn.authzを使わずにLimitExceptで制限する.下のようにすることによって読み込みは誰でもできるが,書き込みにはユーザ認証が必要になる.
<Location /svn> DAV svn SVNParentPath /var/svn SVNListParentPath on AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>