SVNをApache+mod_dav_svn.so で動かしていてはまったので、メモ。

SVNのリポジトリは、ApacheのDocumentRootに置くとリポジトリのルートディレクトリに接続できなくなるみたい。
<h3> 状況</h3>
リポジトリURL: http://svn.eumyang.net/repo で接続しようとしている。
実際のディレクトリ: /home/svn/repo
    /trunk
    /branches
    /tags
という状況で以下のようにapacheのconfを作成して、

 <VirtualHost *:80>
    DocumentRoot /home/svn/
    ServerName svn.eumyang.net
    <Location />
        DAV svn
        SVNParentPath /home/svn
    </Location>
 </VirtualHost>

リポジトリURLにアクセスしようとすると

Repository moved permanently to “http://svn.eumyang.net/repo

となってしまう。

下位フォルダのhttp://svn.eumyang.net/repo/trunk/http://svn.eumyang.net/repo/branches/ には接続できるが、
trunkからbranchesにブランチを切ろうとしても
Repository moved permanently to “http://svn.eumyang.net/repo
のエラーでハマる。

いろいろと調べてみるとDocumentRoot内には、リポジトリを置けないらしい。
まぁ、SVN専用のVirtualhostなので、以下のようにドキュメントルートをコメントアウト

 <VirtualHost *:80>
#    DocumentRoot /home/svn/
    ServerName svn.eumyang.net
    <Location />
        DAV svn
        SVNParentPath /home/svn
    </Location>
 </VirtualHost>

Apacheを再起動したら普通に接続できて、ブランチも切れるようになった。
会社でも、結構SVNつかってきたけど、ずっとドキュメントルート書いてなかったのかなぁ。
これまではまらなかったの不思議でした。