WebDAVでリポジトリを公開すべく、apache2の設定を行います。
apache2の設定ファイルは、c:\usr\apache2\conf\httpd.confです。
LoadModule行の設定確認
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
は、subversionのインストール時に自動で追加されているはず。
もし、コメントアウトされている場合はコメントをはずす。
Locationセクションの追加
httpd.confに以下を追加する。
<Location /svn/sample>
DAV svn
SVNPath d:/svn/repos/sample
</Location>
apache2の再起動
サービス(apache2)を再起動する。
確認
ブラウザで、http://localhost/svn/sample/ にアクセスすると、リポジトリが表示されます。
WebDAVでのリポジトリ公開の設定では、全ての人がリポジトリの参照及び更新ができてしまいます。
これではまずいので、細かい認証の設定例を記載する。
(
ここを参考にしました)
authzsvn.confの作成
d:/svn/repos/sample/authzsvn.confを以下の様な内容で作成します。
[groups]
#開発者
developers = foo, bar
#管理者
manager = foo
[/]
#すべての人が読み込み可能
* = r
[sample:/trunk]
#開発者は読み書き可能
@developers = rw
[sample:/branches]
#管理者は書き込みも可能
@manager = rw
[sample:/tags]
#管理者は書き込みも可能
@manager = rw
リポジトリ管理者をfoo , 開発者をfoo,barとして定義してます。
その他(匿名ユーザ)は読み込み専用とし、foo,barはtrunk下の読み書き可能
fooユーザは、branches,tags下の読み書きが可能となる
匿名アクセスの設定例
すべての人に対して自由にアクセスすることを許します。ユーザは匿名で扱われます。
apache2の設定ファイル(httpd.conf)のSVNのLocationセクションを以下の様に定義します。
<Location /svn/sample>
DAV svn
SVNPath d:/svn/repos/sample
# our access control policy
AuthzSVNAccessFile d:/svn/repos/sample/authzsvn.conf
</Location>
認証つきアクセスの設定例
すべての人に対して認証を求めます。
apache2の設定ファイル(httpd.conf)のSVNのLocationセクションを以下の様に定義します。
<Location /svn/sample>
DAV svn
SVNPath d:/svn/repos/sample
# our access control policy
AuthzSVNAccessFile d:/svn/repos/sample/authzsvn.conf
# only authenticated users may access the repository
Require valid-user
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository(sample)"
AuthUserFile d:/svn/repos/sample/htpasswd
</Location>
(*) htpasswdの作成は、
#c:\usr\apache2\bin\htpasswd -c d:/svn/repos/sample/htpasswd foo
でOK。
認証つき/匿名の両方でアクセスする場合の設定例
読み込み時は匿名でアクセスするが、更新時に認証を聞いてくる様な設定です。
apache2の設定ファイル(httpd.conf)のSVNのLocationセクションを以下の様に定義します。
<Location /svn/sample>
DAV svn
SVNPath d:/svn/repos/sample
# our access control policy
AuthzSVNAccessFile d:/svn/repos/sample/authzsvn.conf
# 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(sample)"
AuthUserFile d:/svn/repos/sample/htpasswd
</Location>