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

Posted

技术标签:

【中文标题】“svn:E195019:检测到 URL 的重定向周期”的原因是啥?【英文标题】:What is the cause of "svn: E195019: Redirect cycle detected for URL"?“svn:E195019:检测到 URL 的重定向周期”的原因是什么? 【发布时间】:2013-08-30 18:06:55 【问题描述】:

尝试从我的 SVN 存储库中结帐给了我

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

但是,似乎此错误仅在我位于某些(特定)代理服务器后面时才会发生。

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

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

服务器别名 svn.mydomain.com DAV svn SVNPath /var/www/vhosts/mydomain.com/svn/myrepo AuthType 基本 AuthName "mydomain svn" AuthUserFile /var/www/vhosts/svn.mydomain.com/conf/htpasswd-myproject # 允许任何人只读访问,否则需要 # 需要认证 需要有效用户 位置>

【问题讨论】:

【参考方案1】:

我在学习本教程后遇到了类似的错误: How to Install SVN Server on Ubuntu 18.04 & 16.04 LTS。后来意识到,我必须在Step 5中删除以下行

别名 /svn /var/lib/svn

【讨论】:

terima kasih !! 不,没有更新,我也是按照这个教程后的问题 现在可能在第 5 步中 sudo vi /etc/apache2/mods-enabled/dav_svn.conf 这家伙值得喝杯咖啡!【参考方案2】:

在我的情况下,问题是 ubuntu 上的配置文件之间存在不兼容的设置。

我有 ubuntu 18.04 和 Apache2 以及来自 ubuntu 的最新 svnserver,为了解决重定向问题,我必须从两个不同的配置文件中删除别名:/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

【讨论】:

【参考方案3】:

确保您使用的链接是 'svn' 而不是 'view' 链接。

即www.myrepo.com/svn/myproject/trunk ||正确www.myrepo.com/view/myproject/trunk ||错误

应该可以的。

【讨论】:

我认为这被不公正地降级了。我在尝试签出 viewvc 网络视图 url 时收到了完全相同的错误消息。示例svn.apache.org/viewvc/ant/sandbox 或svn.apache.org/viewvc/axis/axis1/java/trunk【参考方案4】:

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

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

这个URL需要在tortoise SVN客户端使用才能结账。

【讨论】:

【参考方案5】:

(我自己的问题给出了答案,用了半个周末的时间寻找解决方案):

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

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

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

只有通过代理访问 repo 时才会显示该错误。

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

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

【讨论】:

我收到此错误消息,但这不是解决方案。我有带有 vanilla subversion 和 libapache2-svn 的 vanilla Apache2,所有这些都已安装并运行,我使用了 SVNParentPath 并在 /var/lib/svn 中创建了两个存储库,我可以在浏览器中浏览它们(到目前为止为空,但它有效) .但是,如果我尝试从命令行导入或签出到相同的 URI localhost/svn/foo,我会收到有关重定向周期的此错误。 /etc/apache2 下的任何文件中的任何地方都肯定没有重定向指令,那么它来自哪里?请记住,这是默认安装,因此无需手动编辑。 很久以前我遇到过这个问题,但据我记得你不需要显式重定向,如果 SVN 根目录和网页( apache) 根目录是一样的。 - 但是:我不知道是否有其他配置会导致相同的错误消息。 原来它不是重定向而是别名。由于某些深不可测的原因,libapache2-svn(我认为)安装的默认 dav_svn.conf 已损坏,因为它包含虚假别名 /svn /var/lib/svn 并且您需要将其注释掉。然后一切正常。为什么这个发货坏了我不能说。

以上是关于“svn:E195019:检测到 URL 的重定向周期”的原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章