Apache 2 + mod_dav_svnでSVNParentPath以下の特定レポジトリにのみBasic認証を噛ます方法
アホみたいに1時間ぐらい時間をつぶしてしまったので、忘れないようにメモメモ。
構造
- repos
- project1
- project2
この状態でproject2にのみBasic認証を噛ます。 http://svn.hogehoge.jp/ にアクセスすると repos 以下のレポジトリ一覧が見れて、ここには大本のBasic認証を噛ましてある。でも特定レポジトリにのみユーザーを追加したい、という場合。
Locationを増やす
<VirtualHost *:80> ServerName svn.hogehoge.jp <Location /> DAV svn SVNListParentPath on SVNParentPath /opt/svn/repos AuthType Basic AuthName "Authorization Realm" AuthUserFile /opt/svn/repos/.htpasswd Require valid-user </Location> <Location /project2> AuthType Basic AuthName "Authorization Zone" AuthUserFile /opt/svn/repos/.htpasswd.another Require valid-user </Location> </VirtualHost>
Locationの中身は / で終わらせない。終わらせるとやっかいなことになる。
DAV svnやSVNPathを書かない。書くとやっかいなことになる。
AuthNameを変更しておいた方がどっち読んでいるのか分かりやすいと思って変更している。特に他意はない。
project2 のみ読み書きできるユーザーを /opt/svn/repos/.htpasswd.another に追加する。ただこの方法だと大本の .htpasswd と .htpasswd.another に重複しているユーザーが出てくるはずなのでちょっと管理しづらいなー、とか思っているところ。仕方がないのかな。