前回、SVNサーバを構築してみた - yoshida_eth0の日記で書いた、リポジトリルートをチェックアウトできない!って問題が解決した。
こういうやつ。
svn: リポジトリは恒久的に 'http://svn.xxx.jp/new-repo/' へ移動しました。relocate (参照 URL の変更) を実行してください
解決策は、ここに書いてあった。
mod_dav_svnでは、Locationで指定したディレクトリと同じ場所に、実際にディレクトリが存在しているとエラーが出る模様。
公開:, Apache + Subversion, , , , , , , , , , , - 忘れたときに備えた記録(2005-03-17)
このようにして、Locationで指すディレクトリに本当にディレクトリが存在しないようにしておけば、エラーが出なくなりましたとさ
厳密に言うと、「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