尝试从我的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>
答案 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进行结帐。