要点: 我有一些svn麻烦,经过“调试”一段时间之后,我不知道从哪里开始。我认为其他人之前可能遇到过这个问题。 问题似乎是我在ISP使用的透明代理背后,但这并不能解释所有事实。
详细信息: 我无法将计算机连接到我自己的域中的svn存储库,该存储库位于DreamHost上。我正在使用tortoise-svn的repo浏览器进行连接,但在执行任何操作(添加文件夹,扩展源树...)后,我收到“400:Bad Request message”。
DreamHost和svn faq都说问题可能是我支持我的ISP建立的某种代理,而我没有任何控制权。问题是,我有另一个工作正常的回购。这让我有点不确定这真的是问题,因为我假设代理会停止每个 svn连接。
另一方面,我的朋友设法使用不同的ISP连接正常。
我很感激为什么会发生这种情况(只有一个回购而不是另一个回购),以及我可以从这里开始的地方。
提前感谢您的帮助。
[编辑1]:我也尝试连接到端口81而不是80,DreamHost svn服务器似乎不接受(我得到“无法连接到服务器”错误)
[编辑2]:根据svn faq,有人建议使用https进行连接。这可能会有效,但是,我的DreamHost帐户现在没有ssl,添加它会花费我每月额外的费用。如果我没有其他选择,我可能会这样做,但如果可以的话,我宁愿找到一个不同的解决方案来降低成本。
P.S。我不确定是在这里发布还是在ServerFault发布,因为这是一个svn问题,我认为最容易遇到这个问题的人是程序员。
P.P.S。如果它对任何人有帮助,我用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>
答案 0 :(得分:5)
我在TortoiseSVN网站上发现了这个: 400 Bad Request
“...”报告请求失败'...'的报告:400错误请求(http://..。)
你在阻止DAV请求的防火墙后面。大多数防火墙都这样做。 请求管理员更改防火墙,或使用https://而不是http://访问存储库,例如https://svn.collab.net/repos/svn/ 这样您就可以使用SSL加密连接到存储库,防火墙不会干扰(如果它们不完全阻止SSL端口)。
答案 1 :(得分:3)
我在我的域上使用Dreamhost SVN并通过ssh + svn访问它。该协议不需要在DH设置SVN服务器。相反,它将通过SSH访问您的帐户并执行本地shell命令到SVN。
存储库的URL最终为:
SVN + SSH://yourDHusername@yourdomain.com/home/yourDHusername/svn/yourrepositoryname/
这只适用于您设置DH shell帐户的无密码SSH访问权限。要执行此操作,您需要生成一个公钥/私钥对,保留在您的计算机上的私人密钥和公共上传到您的DH shell帐户的〜/ .ssh / authorized_keys。如何设置完全取决于您选择的操作系统。参见例如:
答案 2 :(得分:1)
您可以检查dav_svn.conf的配置并关闭此行SVNAdvertiseV2Protocol。
答案 3 :(得分:0)
如果您可以尝试通过80以外的其他端口进行连接。我打赌其他可以正常工作的回购使用https,它位于不同的端口上。您的ISP正在过滤端口80上的某些请求,或者至少是我的猜测。
<强>更新强>
要连接到其他端口上的服务器,您需要配置服务器以允许您这样做。它并不像在网址中放置:81
那么简单。您的主机可能需要为您配置此功能。我会与您的主机核实,有时他们为常见服务设置非标准端口以绕过您的问题。
您也可以联系您的ISP,看看他们对此有什么看法。他们可能会否认他们正在进行任何过滤,但值得一试。
答案 4 :(得分:0)
就我而言,这只是升级Tortoise客户端的问题。我有1.8运行,我得到了错误,在虚拟机上我运行的版本1.8.4运行得很好。
答案 5 :(得分:0)
我意识到问题是某个文件夹特有的。我进入了文件夹,选中了每个子文件夹,并为每个文件夹尝试了更新命令(可以一起完成所有这些)。
有效