“svn:E195019:为URL检测到重定向周期”的原因是什么?

时间:2013-08-27 20:29:50

标签: svn apache2 webdav websvn dav

尝试从我的SVN回购结账给我

    svn: E195019: Redirect cycle detected for URL ...

但是,当我在某个(特定)代理服务器后面时,似乎只会出现此错误。

正如其他帖子(参见tortoise svn giving me "Redirect cycle detected for URL 'domain/svn'")中所讨论的,如果SVN DAV配置错误,例如使用SVNParentPath,其中应该使用SVNPath,则会发生此错误。但是,我的配置似乎是正确的 - 据我所知 - 问题只发生在代理服务器后面。

存储库的设置或多或少是标准的,例如,

    ServerAlias  svn.mydomain.com
    <Location /myrepo>
        DAV svn
        SVNPath /var/www/vhosts/mydomain.com/svn/myrepo
        AuthType Basic
        AuthName "mydomain svn"
        AuthUserFile /var/www/vhosts/svn.mydomain.com/conf/htpasswd-myproject
        # Allow read-only access to anyone, otherwise require
        # require authentication
            Require valid-user
    </Location>

5 个答案:

答案 0 :(得分:12)

(我用了半个周末来搜索解决方案后给出了我自己的问题的答案):

似乎此错误消息与subversion存储库位于目录svn/myrepo中的事实相关,其中目录svn也被列为子域{{1}的DocumentRoot }。那个DocumentRoot指令对我来说并不明显,因为子域的文档根在一个不同的conf文件中被混淆了(我使用Plesk来维护服务器)。 这造成了某种模糊性。将子域的文档根目录移动到其他位置后,错误消息就消失了。

问题很难追查,因为 - 据我所知 -

  • 如果回购站位于子域的顶层,即上述配置中的svn.mydomain.com<Location />,则不会出现错误。

  • 只有通过代理访问回购时才会显示错误。

  • 与DocumentRoot的冲突并不那么明显,因为它是一个子域名。

总结一下:解决方案(使用Plesk时):将Plesk设置(GUI)中子域的“DocumentRoot”更改为SVN目录中的不同内容。 www.mydomain.com的“DocumentRoot”是SVNPath /var/www/vhosts/mydomain.com/svn。 svn.mydomain.com的“DocumentRoot”是(默认情况下)httpdocs。我将其更改为svn,问题就消失了。文件夹httpdocs-svn未在我的设置中使用,因为svn.mydomain.com下面的所有内容都由DavSVN处理。

答案 1 :(得分:8)

确保您使用的链接是&#39; svn&#39;而不是&#39;视图&#39;链路。

即。 www.myrepo.com/svn/myproject/trunk ||正确
     www.myrepo.com/view/myproject/trunk ||不正确

这应该有效。

答案 2 :(得分:6)

在本教程之后,我遇到了类似的错误: How to Install SVN Server on Ubuntu 18.04 & 16.04 LTS。后来意识到,我必须在步骤3

中删除以下行
  

别名/ svn / var / lib / svn

答案 3 :(得分:3)

就我而言,问题是ubuntu上的配置文件之间存在不兼容的设置。

我拥有ubuntu 18.04和Apache2,以及来自ubuntu的最新svnserver,为了解决重定向问题,我不得不从两个不同的配置文件中删除Alias: / etc / apache2 / mods-enabled / dav_svn /etc/apache2/site-enabled/default-ssl.conf

/ etc / apache2 / mods-enabled / dav_svn

 #Alias /svn /svn_repo/svn
 <Location /myrepo>
    DAV svn
    SVNPath /svn_repo/svn
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /mypath/dav_svn.passwd
    Require valid-user
    AuthzSVNAccessFile /etc/apache2/dav_svn.authz
</Location>

/etc/apache2/site-enabled/default-ssl.conf

 #Alias /svn /svn_repo/svn
 <Location /myrepo>
    DAV svn
    SVNPath /svn_repo/svn
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /mypath/dav_svn.passwd
    Require valid-user
    AuthzSVNAccessFile /etc/apache2/dav_svn.authz
</Location>

修改后很明显,我需要重新启动apache:

sudo service apache2 restart

答案 4 :(得分:0)

问题在于您在结帐时提供的SVN网址。我检查了这个问题的各种帖子,但没有一个为我工作。以下是对我有用的非常简单的解决方案,

您需要使用链接'http://localhost:3343/csvn/repo/list建立csvn存储库 '并复制您要访问的存储库的'Checkout命令'的URL。

您需要在陆龟SVN客户端中使用此URL进行结帐。