リポジトリルートをチェックアウトする方法

前回、SVNサーバを構築してみた - yoshida_eth0の日記で書いた、リポジトリルートをチェックアウトできない!って問題が解決した。
 
こういうやつ。

svn: リポジトリは恒久的に 'http://svn.xxx.jp/new-repo/' へ移動しました。relocate (参照 URL の変更) を実行してください

 
解決策は、ここに書いてあった。

mod_dav_svnでは、Locationで指定したディレクトリと同じ場所に、実際にディレクトリが存在しているとエラーが出る模様。
このようにして、Locationで指すディレクトリに本当にディレクトリが存在しないようにしておけば、エラーが出なくなりましたとさ

公開:, Apache + Subversion, , , , , , , , , , , - 忘れたときに備えた記録(2005-03-17)

 
厳密に言うと、「DocumentRoot+Location+リポジトリ名」があると駄目。
言うなれば「Apache経由でアクセスした場合に、SVNの設定をしている場合としていない場合の両パターンで同じディレクトリが見えてちゃだめ」。
多分そういう事。
 

httpd.conf

http://svn.example.com/リポジトリ一覧を表示して、 http://svn.example.com/projectname/リポジトリルートにしたいなら、DocumentRootをどこか関係ないところに設定しておけば問題ない。
どうせWebDAVに上書きされるんだから、存在していて権限があるディレクトリであれば /tmp でもなんでもいい。(多分)
 

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName svn.example.com
    ErrorLog "|/usr/sbin/cronolog /var/log/httpd/error_log/error_%Y%m_svn.log"
    CustomLog "|/usr/sbin/cronolog /var/log/httpd/access_log/access_%Y%m_svn.log" common env=!no_log
    <Location />
        DAV svn
        SVNListParentPath on
        SVNParentPath /var/www/virtual/svn
        SVNAutoversioning on
        AuthType Digest
        AuthName "Subversion Repository"
        AuthUserFile /var/www/virtual/svn/.htpasswd
        Require valid-user
    </Location>
    <LocationMatch /.+>
        AuthzSVNAccessFile /var/www/virtual/svn/.authz
        Satisfy Any 
    </LocationMatch>
</VirtualHost>

 

リポジトリ作成

すぐ忘れるから書いておく。
これで、 http://svn.example.com/projectname/ が作られる。

cd /var/www/virtual/svn
mkdir projectname
svnadmin create projectname
chown -R apache:apache projectname