Subversion 错误:存储库已永久移动,请重新定位

Subversion 错误:存储库已永久移动,请重新定位

我已经在我的服务器上设置了 subversion 和 apache。

如果我通过我的网络浏览器浏览它,它可以正常工作(http://svn.host.com/reposname)。但是,如果我在我的计算机上进行结帐,则会收到以下错误:

Command: Checkout from http://svn.host.com/reposname, revision HEAD, Fully recursive, Externals included  
Error: Repository moved permanently to 'http://svn.host.com/reposname/'; please relocate  

我检查了 apache 的错误日志,但是它什么也没说。(现在有了 - 请参阅编辑)

我的存储库存储在:/var/www/svn/repos/

我的网站存储在:/var/www/vhosts/x/...

这是子域的配置文件:

<Location />
   DAV svn
   SVNParentPath /var/www/svn/repos/

   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /var/www/svn/auth/svn.htpasswd
   Require valid-user
</Location>

身份验证工作正常。

有谁知道这可能是什么原因造成的?

- 编辑

所以我重新启动了 apache(再次),并再次尝试,现在它给了我一个错误消息,但这并没有真正帮助。有人知道这是什么意思吗?

[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] Could not fetch resource information.  [403, #0]
[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] (2)No such file or directory: The URI does not contain the name of a repository.  [403, #190001]

-- 编辑2

如果我svn info这样做不会提供任何有用的东西:

[root@server domain.com]# svn info http://svn.domain.com/repos/
Username: username
Password for 'username':
svn: Repository moved permanently to 'http://svn.domain.com/repos/'; please relocate

我还尝试进行本地检出(svn checkout file:///var/www/svn/repos/reposname),效果很好(添加/提交也很好)。所以这似乎与 Apache 有关。

其他一些信息:

  • 我正在运行 CentOs 5.3
  • Plesk 9.3
  • Subversion,版本 1.6.9(r901367)

-- 编辑 3

我尝试移动存储库,但没有任何变化。

selinux 已被禁用,所以也不是这样。

答案1

我最近有这个...但后来我忘记了网址:)

您必须做的一件事是确保您的 svn 位置不与任何 apache 可服务的网站重叠。即,如果您将 DocumentRoot 设置为 /www,并将 svn 位置设置为 /www/svn...,那么您就会遇到麻烦 - Apache 将不知道应该用什么来提供服务(即 svn 特殊处理程序或直接 http 处理程序)。

查看此常见问题解答条目

答案2

尝试签出http://svn.host.com/reposname/(注意结尾的斜杠)。

答案3

检查这个网站: http://www.rkrishardy.com/2009/12/subversion-fix-svn-copy-causes-repository-moved-permanentl/

可能别名指向与配置的 dav_svn.mod 相同的位置,并且在访问 repo 时 apache 和 dav_svn 之间存在竞争条件。

提供的文章中有更好的解释

在 dav_svn.conf 中:

  <Location /svn>  #Alias we are talking about
  DAV svn

在 apache_site.conf 中

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName svn.za11.pl

    #Alias /svn  "/mnt/nfs/svn/"  ###Comment out or change this alias
    DocumentRoot /mnt/nfs/svn/
    <Directory /mnt/nfs/svn/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        AuthType Basic 
        AuthName "Subversion Repository"
        AuthUserFile /etc/apache2/dav_svn.passwd
        Require valid-user
    </Directory> 
... rest of the file

答案4

当我错误地将我的 repo 放在 Apache 提供的 html 树下时,在我的 FC14 机器上,使用基于 RPM 的 subversion 和 apache 安装,出现了这个错误。

SVNParentPath(在 /etc/httpd/conf.d/subversion.conf 中)应该指向 DocumentRoot 之外的目录。

我把我的仓库移出后问题就消失了。

希望这可以帮助。

相关内容