4

摘要: 我遇到了一些svn问题,在“调试”了一段时间之后,我不知道从哪里开始。我认为其他人之前可能遇到过这个问题。问题似乎是我在我的 ISP 使用的透明代理后面,但这并不能解释所有事实。

详细信息: 我无法将我的计算机连接到我自己域中的 svn 存储库,该存储库托管在 DreamHost 上。我正在使用 tortoise-svn 的 repo 浏览器进行连接,但在执行任何操作(添加文件夹、扩展源树...)后,我收到“400:错误请求消息”。

DreamHost 和 svn faq 都说问题可能是我在我的 ISP 设置的某种代理后面,而我无法控制它。问题是,我有另一个运行良好的仓库。这让我有点不确定这真的是问题所在,因为我认为代理会停止每个svn 连接。

另一方面,我的朋友设法使用不同的 ISP 连接良好。

对于为什么会发生这种情况(并且只有一个回购而不是另一个)以及我可以从这里去哪里的任何帮助,我将不胜感激。

提前感谢您的帮助。

[编辑 1]:我还尝试连接到端口 81 而不是 80,DreamHost svn 服务器似乎不接受(我收到“无法连接到服务器”错误)。

[编辑 2]:有人建议,根据 svn faq,使用 https 进行连接。这可能会奏效,但是,我的 DreamHost 帐户现在没有 ssl,添加它会使我每月支付额外费用。如果没有其他选择,我可能会这样做,但如果可以的话,我更愿意找到不同的解决方案来降低成本。

PS我不确定是在这里发布还是在ServerFault上发布,因为这是一个svn问题,我认为最有可能遇到这个问题的人是程序员。

PPS 如果它对任何人有帮助,我使用 WireShark 嗅探了从我的计算机到主机的流量,最后发送的消息(来自我的机器)是这样的:

REPORT /**** HTTP/1.1
Host: svn.***.com
User-Agent: SVN/1.6.5 (r38866)/TortoiseSVN-1.6.5.16974 neon/0.28.6
Connection: TE
TE: trailers
Content-Type: text/xml
Accept-Encoding: gzip
DAV: http://subversion.tigris.org/xmlns/dav/svn/depth
DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo
DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops
Content-Length: 109
Accept-Encoding: gzip
Authorization: Basic ***=

<?xml version="1.0" encoding="utf-8"?><S:get-locks-report xmlns:S="svn:" xmlns:D="DAV:"></S:get-locks-report>
4

6 回答 6

5

我在 TortoiseSVN 网站上找到了这个: 400 Bad Request

报告请求在“...”上失败“...”的报告:400 错误请求(http://...

您位于阻止 DAV 请求的防火墙后面。大多数防火墙都是这样做的。要么要求您的管理员更改防火墙,要么使用 https:// 而不是 http:// 访问存储库,就像在https://svn.collab.net/repos/svn/中 那样,您使用 SSL 加密连接到存储库,防火墙不能干扰(如果它们不完全阻止 SSL 端口)。

于 2009-09-18T20:04:09.633 回答
3

我使用在我的域上设置的 Dreamhost SVN 并通过 ssh+svn 访问它。此协议不需要在 DH 设置 SVN 服务器。相反,它会通过 SSH 访问您的帐户并对 SVN 执行本地 shell 命令。

存储库的 URL 最终为:

svn+ssh://yourDHusername@yourdomain.com/home/yourDHusername/svn/yourrepositoryname/

仅当您设置对您的 DH shell 帐户的无密码 SSH 访问时,这才有效。为此,您需要生成一个公钥/私钥对,私钥保存在您的机器上,公钥上传到 ~/.ssh/authorized_keys 中的 DH shell 帐户。如何设置完全取决于您选择的操作系统。参见例如:

http://blog.dreamhosters.com/kbase/index.cgi?area=138

于 2009-10-03T22:07:41.797 回答
1

您可以检查您的 dav_svn.conf 配置并添加此行 SVNAdvertiseV2Protocol off。

您可以参考此页面“400 Bad Request when commit to SVN”

于 2015-04-08T16:46:22.040 回答
0

如果您可以尝试通过 80 以外的其他端口进行连接。我敢打赌,另一个可以正常工作的 repo 是使用位于不同端口上的 https。您的 ISP 正在过滤端口 80 上的某些请求,或者至少这是我的猜测。


更新:

要连接到不同端口上的服务器,您需要将服务器配置为允许您这样做。它并不像仅仅放置:81在 url 中那么简单。您的主机可能必须为您配置它。我会与您的主机核实,有时他们会为常见服务设置非标准端口以绕过诸如您的问题。

您也可以联系您的 ISP,看看他们对此有何看法。他们可能会否认他们正在做任何过滤,但值得一试。

于 2009-09-18T16:49:10.283 回答
0

我意识到问题是特定于某个文件夹的。我进入文件夹,选择了每个子文件夹并尝试了每个文件夹的更新命令(可以将所有这些都一起执行)。

有效

于 2014-10-21T13:52:26.497 回答
0

就我而言,这只是升级 Tortoise 客户端的问题。我在运行 1.8 时遇到了错误,在虚拟机上我运行了 1.8.4 版本,它运行得很好。

于 2014-09-09T05:06:10.500 回答