SVN 1.5.2上的凭证缓存通过HTTP失败

时间:2008-09-30 09:34:25

标签: svn

我们最近在我们的一些服务器/虚拟机上安装了SVN 1.5.2(使用VisualSVN / Apache),现在当我发送带有用户名/密码的命令行命令时,它们不再被缓存了。 之前,我们在svn://上运行了安装了CollabNet的SVN 1.5.0,并在第一个命令之后缓存了凭据。

到目前为止,我发现在解决此问题时遇到了困难。我的情况是:

  • SERVER_SVN(SVN 1.5.2 via svn://)
  • SERVER_HTTP(SVN 1.5.2 via http://)

从命令行到SERVER_SVN的命令:凭证缓存正常

与SERVER_HTTP相同的命令:凭证未缓存

所以,它似乎是一个http / apache服务器问题......但是,从Tortoise中,凭据被缓存到两个服务器,因此它似乎也是一个客户端调用问题。我的想法已经不多了......

我使用的示例命令序列:


svn ls c:\mylocalfolderSVN --username foo --password bar
svn ls c:\mylocalfolderSVN // this works
svn ls c:\mylocalfolderHTTP --username foo --password bar
svn ls c:\mylocalfolderHTTP  // this fails

最后一个命令停止并要求进行身份验证。

svn://和http://之间的凭据缓存是不同的,还是我们错过了服务器配置中的某些内容?

提前感谢任何建议。

4 个答案:

答案 0 :(得分:1)

AFAIK凭证缓存是客户的责任。所有服务器都会在必要时询问这些凭据。我检查本地客户端配置文件,也许看看不同版本客户端会发生什么。

答案 1 :(得分:0)

您是否完全符合SVN服务器的域名资格?如果HTTP的缓存是基于cookie的,并且服务器正在使用FQDN编写cookie,但您的请求不使用FQDN(您使用的是svnserver而FQDN是svnserver.company)则cookie可能无效且每个请求将需要身份验证。

答案 2 :(得分:0)

正如wds指出的那样,SVN凭据缓存是在客户端由svn.exe完成的,在收到服务器的响应后,“好吧,我实际上使用了你发送的凭据,而且它们很好”。

这就是为什么我无法弄清楚发生了什么:我从头开始安装2台服务器,我向两者发送相同的命令行,一组凭据被缓存,另一组不是......但是TortoiseSVN,使用相同的svn.exe下面,缓存两个(也许它作弊,缓存凭据然后svn.exe没有这样做)。

我现在最好的猜测是http://服务器不会向svn.exe发送“适当的”响应,但我真的不想嗅探所有的http请求,看看发生了什么,叫我懒惰,但我有更有趣的事情要做: - )

所以我改变了我的设计,现在我将把SVN密码保存在内存中(WinForm客户端应用程序,都在我们的内部网络中使用),然后用每个命令传递它。

答案 3 :(得分:0)

为了缓存凭据,除了适当的配置外,您还需要执行这样的SVN:

svn ls REPOSITORY_URL

而不是

svn ls WORKING_COPY_PATH

这对我有用,不确定这是否是这种情况下的解决方案。