15

尝试从我的 SVN 回购中结帐给了我

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

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

正如在其他帖子中所讨论的(请参阅tortoise svn 给我“检测到 URL 'domain/svn' 的重定向周期”),如果 SVN DAV 配置错误,例如,使用 SVNParentPath 而应该使用 SVNPath,则会发生此错误。但是,我的配置似乎是正确的,并且 - 据我所知 - 只有在代理后面时才会出现问题。

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

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

5 回答 5

22

在本教程之后,我遇到了类似的错误: 如何在 Ubuntu 18.04 & 16.04 LTS 上安装 SVN 服务器后来意识到,我必须在第5步中删除以下行

别名 /svn /var/lib/svn

于 2018-10-16T04:14:54.647 回答
14

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

似乎此错误消息与 subversion 存储库位于目录svn/myrepo中的事实有关,该目录svn也被列为子域的 DocumentRoot svn.mydomain.com。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 处理。

于 2013-08-27T20:29:50.037 回答
12

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

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

那应该行得通。

于 2016-09-01T11:44:16.523 回答
5

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

我有 ubuntu 18.04 和 Apache2 以及来自 ubuntu 的最新 svnserver,为了解决重定向问题,我必须从两个不同的配置文件中删除别名:/etc/apache2/mods-enabled/dav_svn/etc/apache2/site-enabled/默认-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
于 2018-07-20T10:40:21.673 回答
0

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

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

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

于 2015-08-11T12:45:50.390 回答