【问题标题】:tortoise svn giving me "Redirect cycle detected for URL 'domain/svn'"tortoise svn 给我“检测到 URL 'domain/svn' 的重定向周期”
【发布时间】:2012-05-18 11:21:42
【问题描述】:

我想在 /var/svn 和 repositories(projects) 中实现 svn-root。 我可以让它在浏览器中工作(http://domain/url 给了我“存储库集合”)但是 TortoiseClient 给了我标题中提到的错误。

我通过执行以下操作(缩短)在我的 ubuntu 服务器上设置了一个颠覆:

mkdir /var/svn
svnadmin create /var/svn/test

我的 dav_svn.conf 如下所示:

<Location /svn>
  DAV svn
  SVNParentPath /var/svn
  SVNListParentPath On
</Location>

我阅读了可能导致问题的符号链接,所以我也会附上我的 000-default 站点(这是标准的顺便说一句):

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

我尝试了How do I list all repositories with the SVNParentPath directive on Apache+SVN? 中的建议 但不幸的是我得到了另一个乌龟错误(虽然我仍然可以在我的浏览器中看到它) 然后它给了我“OPTIONS 请求在响应中返回了无效的 XML:第 1 行的 XML 解析错误:找不到元素” (并且该 url 的 HTTP OPTIONS 确实没有给出响应正文)

有谁知道是什么导致了这个问题?

干杯!

编辑:这是尝试通过乌龟到达http://server/svn 后的access.log 输出

(使用位置 /svn) 注意 301 .. TortoiseSVN 将路径更改为 'http://server/svn' 没有前导斜杠,但我指定在 'http://server/svn / '内搜索

[10/May/2012:00:42:29 +0200] "OPTIONS /svn HTTP/1.1" 301 573 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:29 +0200] "OPTIONS /svn HTTP/1.1" 301 573 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:29 +0200] "OPTIONS /svn HTTP/1.1" 301 573 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:29 +0200] "PROPFIND /svn HTTP/1.1" 301 516 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:29 +0200] "OPTIONS /svn HTTP/1.1" 301 573 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:29 +0200] "PROPFIND /svn HTTP/1.1" 301 516 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:30 +0200] "OPTIONS /svn HTTP/1.1" 301 573 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:30 +0200] "PROPFIND /svn HTTP/1.1" 301 516 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:30 +0200] "OPTIONS /svn HTTP/1.1" 301 573 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:30 +0200] "OPTIONS /svn HTTP/1.1" 301 573 "-" "SVN/1.7.4 neon/0.29.6"
[10/May/2012:00:42:30 +0200] "OPTIONS /svn HTTP/1.1" 301 573 "-" "SVN/1.7.4 neon/0.29.6"
[10/May/2012:00:42:30 +0200] "OPTIONS /svn HTTP/1.1" 301 573 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:30 +0200] "OPTIONS /svn HTTP/1.1" 301 573 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:30 +0200] "OPTIONS /svn HTTP/1.1" 301 573 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:42:30 +0200] "OPTIONS / HTTP/1.1" 200 236 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"

(带有位置 /svn/)

[10/May/2012:00:36:57 +0200] "OPTIONS /svn HTTP/1.1" 200 236 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:36:57 +0200] "OPTIONS /svn HTTP/1.1" 200 236 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:36:57 +0200] "OPTIONS /svn HTTP/1.1" 200 236 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:36:57 +0200] "OPTIONS /svn HTTP/1.1" 200 236 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:36:58 +0200] "OPTIONS /svn HTTP/1.1" 200 236 "-" "SVN/1.7.4 neon/0.29.6"
[10/May/2012:00:36:58 +0200] "OPTIONS /svn HTTP/1.1" 200 236 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:36:58 +0200] "OPTIONS /svn HTTP/1.1" 200 236 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"
[10/May/2012:00:36:58 +0200] "OPTIONS / HTTP/1.1" 200 236 "-" "SVN/1.7.4/TortoiseSVN-1.7.6.22632 neon/0.29.6"

【问题讨论】:

  • 这可能是个小问题,但是你有没有机会让你的 TortoiseSVN 通过网络代理?我曾经看到过 TortoiseSVN 存储库浏览器和存储库之间的请求像这样反弹,并且 Web 代理是源...
  • 不,乌龟不使用任何代理。无论如何,我现在做了一个单一的回购并将所有东西放在那里 - 将 SVNPath 设置为那个回购,至少我现在有 SVN。
  • 可能是SElinux的问题。看这里绿色解决方案:serverfault.com/questions/114852/…

标签: svn apache2 tortoisesvn mod-dav-svn


【解决方案1】:

我知道这是一个旧线程,但是为了其他发现它的人的利益:

只是一个猜测,但是您的浏览器给您的 url 是否有“viewvc”或 svn 浏览器添加的其他部分?

i.e. http://mysvn/viewvc/trunk/.....  

Tortoise 不会检查它,因为它不是一个实际的 svn url;您的 svn 网址可能类似于

http://mysvnsvr/mysvn/trunk.....

【讨论】:

  • 嘿,不,事实并非如此。我的特殊问题是 - 正如 Idalonzo 所说 - Tortoise 不支持浏览 repos。
  • 谢谢 Jay,我正在使用 CollabNet 的 SubversionEdge,这解决了我的问题。
  • 要查看实际的 repo url,请在浏览器中打开 [mysvn/viewvc/trunk/],在页面底部您将看到 svn checkout url。
【解决方案2】:

在 CentOS7 上,我删除了 Alias 指令,它可以工作。

【讨论】:

  • 刚遇到这个问题(多年后),这确实是我最终解决的问题(CentOS7 服务器,Win10 客户端)
  • 我在同一个发行版上也遇到了同样的问题,同样的解决方案也奏效了 :) 你知道为什么这样有效吗?
【解决方案3】:

TortoiseSVN 存储库浏览器似乎不支持浏览存储库集合。

所以如果你有存储库:

/var/svn/repo1
/var/svn/repo2
/var/svn/repo3

还有dav_svn.conf

<Location /svn>
  DAV svn
  SVNParentPath /var/svn
  SVNListParentPath on
</Location>

您可以使用指向http://server/svn 的网络浏览器浏览它们。

对于 TortoiseSVN,您还必须指定存储库的名称,例如

http://server/svn/repo1
http://server/svn/repo2
http://server/svn/repo3

【讨论】:

    【解决方案4】:

    遵循 Ubuntu 16.04 上的 @rdconsolo 建议,删除 Alias 指令,对我有用

    #Alias /svn /var/lib/svn
    <Location /svn>
    
    DAV svn
    SVNParentPath /var/lib/svn
    SVNListParentPath On
    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /etc/apache2/dav_svn.passwd
    Require valid-user
    
    </Location>
    

    【讨论】:

    • 这对我也有用。我在 ubuntu 16.04 上的环境 SVN 服务器和在 Windows 7 上使用 tortoise 的客户端。在备注该行后我可以执行“svn checkout”。
    【解决方案5】:

    我在标准配置中遇到了问题,原因是我在 webserver 中使用了与 DocumentRoot 相同的目录,在 websvn/davsvn 配置中使用了 SVNPath

    详情见What is the cause of "svn: E195019: Redirect cycle detected for URL"?

    【讨论】:

      【解决方案6】:

      对我来说,问题是我的文档根目录中有一个 .htaccess RewriteRule,要求在每个没有 / 的 URL 中添加一个尾随 /。

      因此,SVN 客户端尝试调用没有尾随 / 的 URL,例如“https://site/repos/project”被 apache 重定向到“https://site/repos/project/”,因此 SVN 客户端尝试转到“https://site/repos/project”再次,依此类推。

      解决方案:没有任何规则会添加可能影响您的 SVN 网址的尾随 /。

      【讨论】:

        【解决方案7】:

        添加:

        SVNListParentPath on
        

        line 为我解决了这个问题。

        【讨论】:

          【解决方案8】:

          我有同样的问题,但不是针对多个存储库,只是存储库中的标签、分支等。删除 conf 文件中的 Alias 标记修复了此问题。我正在使用 SVN 1.8 和 Tortoise 1.9 运行 Centos 7。

          【讨论】:

            猜你喜欢
            • 2016-02-21
            • 2012-11-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多