"svn: E195019: Redirect cycle detected for URL"的原因是什么?



尝试从SVN回购中结账会给我

svn:E195019:检测到URL的重定向周期。。。

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

正如在另一篇文章中所讨论的(请参阅乌龟svn给我的"检测到URL的重定向周期"),如果svn DAV配置错误,例如使用SVNParentPath,其中应该使用SVNPath,就会发生此错误。然而,我的配置似乎是正确的,而且据我所知,问题只发生在代理之后。

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

服务器别名svn.mydomain.com<位置/myrepo>DAV svnsvn路径/var/www/vhosts/mydomain.com/svn/myrepoAuthType BasicAuthName"mydomain svn"AuthUserFile/var/www/vhosts/svn.mydomain.com/conf/htpasswd-myproject#允许任何人以只读方式访问,否则要求#需要身份验证需要有效用户<位置>

在本教程中,我遇到了类似的错误:如何在Ubuntu 18.04&16.04升。后来意识到,我必须删除步骤5中的以下行

Alias/svn/var/lib/svn

(在花了半个周末的时间搜索解决方案后,我给出了自己问题的答案):

此错误消息似乎与subversion存储库位于目录svn/myrepo有关,其中目录svn也被列为子域svn.mydomain.com的DocumentRoot。DocumentRoot指令对我来说并不明显,因为子域的文档根是在另一个conf文件中配置的(我使用Plesk来维护服务器)。这造成了某种歧义。一旦我将子域的文档根移到另一个位置,错误消息就消失了。

这个问题很难找到,因为据我所知,

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

  • 只有通过代理访问回购时,才会出现错误。

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

因此,总结一下:解决方案(使用Plesk时):将Plesk设置(GUI)中子域的"DocumentRoot"更改为与SVN目录不同的内容。www.mydomain.com的"DocumentRoot"是httpdocs。svn.mydomain.com的"DocumentRoot"(默认情况下)为svn。我把它改成httpdocs-svn,问题就解决了。文件夹httpdocs-svn没有在我的设置中使用,因为svn.mydomain.com下面的所有内容都由DavSVN处理。

确保您使用的链接是"svn",而不是"view"链接

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

这应该行得通。

在我的案例中,问题是ubuntu上的配置文件之间存在不兼容的设置。

我有ubuntu 18.04和Apache2,还有ubuntu的最新服务器,为了解决重定向问题,我不得不从两个不同的配置文件中删除Alias:/etc/Apache2/mods-enabled/dav_svnetc/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

问题出在签出过程中提供的SVN URL上。我检查了这个问题的各种帖子,但没有一个对我有效。下面是对我有效的非常简单的解决方案,

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

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

我已经解决了同样的问题。遵循以下步骤:

删除

Alias /svn /var/lib/svn` ( `# Alias /svn /var/lib/svn` ) ,  

sudo service apache2 restart

相关内容

  • 没有找到相关文章

最新更新