另一个" svn:存储库永久迁移到请重新安置"问题

时间:2012-05-30 01:06:43

标签: apache svn http

我在同一台服务器上有很多项目。该服务器托管SVN repos和实际的Web项目。我想要这个结构:

project1.server.com - with doc root to /var/www/html/project1/public
project2.server.com - with doc root to /var/www/html/project2/public
project3.server.com - with doc root to /var/www/html/project3/public

并且能够使用此URL访问每个SVN仓库

svn.server.com/project1 - with repo root at /var/www/svn/project1/
svn.server.com/project2 - with repo root at /var/www/svn/project2/
svn.server.com/project3 - with repo root at /var/www/svn/project3/

我目前的配置是:

<VirtualHost *:80>
        ServerName project1.server.com
        DocumentRoot "/var/www/html/project1/public"
        RewriteEngine off
        <Location />
                RewriteEngine on
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php
        </Location>
</VirtualHost>

# ... similar <VirtualHost> tags here for the other web subdomains

<VirtualHost *:80>
        ServerName svn.server.com
        <Location />
                Deny from all
        </Location>

        <Location /project1>
                Allow from all
                AuthType Basic
                AuthUserFile /etc/svn-auth-conf
                Require valid-user
                DAV svn
                SVNPath /var/www/svn/project1
                AuthName "Project 1 - Development Repository"
                AuthzSVNAccessFile /etc/svn-acl-conf
        </Location>

# ... similar <Location> tags for the other repos

</VirtualHost>

如果我将DocumentRoots更改为不同的/ var / www / html / project1-site / public,这很有效,所以我很确定发生的事情是this

  

也可能在Web根目录中有一个与存储库URL同名的对象。例如,假设您的Web服务器的文档根目录是/ var / www,而您的Subversion存储库位于/ home / svn / repo。然后,您将Apache配置为在http://server.com/myrepo处为存储库提供服务。如果您随后创建目录/ var / www / myrepo /这将导致301错误发生。

但我真的想保留上面显示的目录结构。我该怎么办才能让它发挥作用?我希望这样,因为它是我能想到的更整洁的结构。所以也接受了想法!

2 个答案:

答案 0 :(得分:1)

您可以尝试更改SVN v-host的端口(我认为SVN通常使用3690)。现在,您对两种协议使用相同的根路径(Location /)和相同的端口(80),因此Apache无法区分这两种请求。

此处提供更多信息:http://en.wikipedia.org/wiki/Apache_Subversion#Repository_access

请注意,您的SVN客户端也必须使用此端口。不确定这对你是否合适。

答案 1 :(得分:0)

如果要将存储库保留在文档根目录中,则可以使用url访问它
svn + ssh://
代替
http://
您需要ssh访问权限和凭据。