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


23

我已经在服务器上设置了Subversion和Apache。

如果我通过Web浏览器浏览到它,则可以正常运行(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 / ...

这是子域的conf文件:

<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
为什么要这么做Options +indexes,在svn位置实际上并没有做任何有用的事情。
Zoredache

您是否尝试过暂时禁用与身份验证/授权有关的任何内容?
Zoredache

我试图使它显示所有存储库的概述(后来我发现有一个不同的命令),我删除了它。我还删除了身份验证,但是它没有解决任何问题(Auth实际上有效,它要求我输入用户名/密码,并且只接受真实的组合)。
Bart S.

Answers:


22

我最近有这个...但是事实证明我忘记了URL :)

您必须做的一件事是确保您的svn位置不与任何可在Apache上服务的网站重叠。也就是说,如果您将DocumentRoot设置为/ www,而svn位置设置为/ www / svn ...,那么您就麻烦了-Apache将不知道它应该与之一起使用(即svn特殊处理程序) ,或直接的http处理程序)。

有关此信息,请参见FAQ条目


看来这可能是正确的答案,但这是与此相关的另一篇可能的文章:forum.webfaction.com/viewtopic.php?id=2423
Paul Kroon

1
哇,我已经知道了,但是我想我再试试看。我创建了一个新的存储库,并且可以正常工作。我对为什么这样做感到困惑,所以我通过FTP进入我的服务器,发现子域(由plesk创建)的httpdocs目录中有一个名为test的目录(与我的存储库相同)。我删除了,现在可以使用了。谢谢您的帮助。
Bart S.

1
详细说明一种常见情况。如果您有虚拟主机设置,并且想在根目录使用SVN(例如svn.example.com是您的回购URL),请不要设置“ DocumentRoot / svn”,然后在VirtualHost中使用“ <Directory / svn>”块为根路径配置DAV svn选项。这将引发Apache在DAV处理程序及其内部处理程序之间混淆的问题。VirtualHost块中不应有DocumentRoot指令。而是使用“ <Location />”块为根路径配置DAV svn选项。
nezroy 2010年

我已经在配置中放入了Alias指令,例如Alias svn /repositories,然后在中设置了所有内容<Location /svn/ >。这个问题与FAQ链接中的问题完全相同,尽管它神秘地起作用了一个月,然后在下午三点的下午茶时间停了下来。如果您的存储库位于“ /”,则您的DocumentRoot指令将与之重叠。
马特·康诺利

它工作得很好!这是DocumentRoot问题!+1
Feiticeir0 '10


2

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

别名指向与配置相同的地方可能是dav_svn.mod,并且在访问回购时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

1
此处的链接已失效,无法替换。
sysadmin1138

//,是否会更新此答案?
弥敦道(Nathan Basanese)2015年

1

我有一个虚拟主机设置,svn.mydomain.com/sites/ 我的虚拟主机上有一个DocumentRoot和Location块。删除documentroot解决了此问题。


1

当我在基于RPM的Subversion和apache安装的FC14计算机上错误地将回购文件放置在Apache提供的html树下时,出现了此错误。

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

我将存储库移出,问题消失了。

希望这可以帮助。


1

我知道这很旧,但因为存在相同的问题,所以我在Google上找到了它。确保端口7080未被计算机或服务器防火墙阻止


0

似乎您没有在做svn checkout,而是svn update在现有的存储库(?)中。

如果是这样,请执行以下操作:

svn switch --relocate http://svn.host.com/reponame


不,正如您在错误消息中看到的那样,我给它显示了“命令:从...签出”,我确实是在尝试新的签出。
Bart S.

0

永久搬家?是否可以使用HTTPFox之类的东西,并验证Apache是​​否为您的存储库提供了正确的状态代码(应该是200/OK)。我相信状态码301对应的网址已“永久移动”,听起来像svn客户端指的是什么。


Firebug和wget都给出200 OK。但是就像我说的那样,如果我通过浏览器浏览(通过浏览到http://svn.server.com/repos)效果很好,那么我会得到“ repos-Revision 0:/”以​​及所有内容。仅当我结帐时才会出现问题。
Bart S.

0

可能在对话中有些晚,但是当在apache配置中使用Alias处理尾随的'/'时,我看到了这一点:Alias / svn / path / to / svn /


0

您还需要确保没有Alias指令映射到svn仓库的位置。我最近有这个的时候

Alias /svn /var/lib/svn
<Location /svn>
...
</Location>

其中别名和位置指令适用于同一路径。


0

我只是遇到了类似的问题,而不是在结帐时,而是在进行提交时。

原因?此文件夹“ obj \ Debug \ TempPE”,出于某些奇怪的原因,无法将文件夹“ TempPE”提交到存储库

解决方案?...一个接一个地提交项目的所有其他文件夹,然后从SVN服务器中删除该位置

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.