Subversion + Apache2.0

Fedora Core3 の環境があったのでちょっと試してみた。
単にブラウザからリポジトリの最新リビジョンを見たいのなら/etc/httpd/conf.d/subversion.confに以下を記述すればいけた。当然、httpdからリポジトリを操作できないとダメなので、リポジトリに対してchown -R apache hogeとかしておく。

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

<Location /svn>
    DAV svn
    SVNParentPath /path/to/repos
</Location>

これは何のアクセス制御もしていないのでURLを知ってる人には丸見え状態。
で、このままだとsvn clientからcheckoutできないみたい。

PROPFIND request failed on '/svn'
PROPFIND of '/svn/hoge': 403 Forbidden (http://hogehoge)

たぶん、PROPFINDメソッドが制限されている(access_logにPROPFINDリクエストあり)と思うのだけどapache詳しくないのでよくわからん。適当にAllow from allを追加して試したところcheckout成功。ただし、これだとコミットもできてしまうようだ。。。コミットは制限してcheckoutだけ許可したいんだけど。


/etc/httpd/conf.d/subversion.confのデフォルトにはなるものが記述されている。LimitExceptは指定外のメソッドを制限するらしい。デフォルトだとコメントアウトされているがPROPFINDなどいろいろ指定されてるので、有効にしてやったけど今度はcheckoutも(当然commitも)うまくいかなくなる。。。
迷ったあげく、Deny from allを追加したところ、やっとcheckoutだけできてcommitが制限される状態にできた。うーん、よくわからんけど、何も書かないとHTTPメソッド以外はDenyなのかなぁ。
セキュリティ的に見たとき、これで良いのかは全く不明。まぁ公にするわけではないのでおいおい調べていこう。
# ちなみに、ここで使ってるsvn clientはTortoiseSVN