为什么我会得到“;svn:E120106:ra#u serf:服务器发送了一个截断的HTTP响应正文”;错误?

为什么我会得到“;svn:E120106:ra#u serf:服务器发送了一个截断的HTTP响应正文”;错误?,svn,Svn,我使用的是SVN1.8.9,在检查主干代码时,我发现以下错误 svn:E120106:ra_serf:服务器发送了一个截断的HTTP响应正文 由于上述错误,我无法签出整个中继代码。请建议解决此问题的方法 谢谢您没有编写SVN服务器的版本。当您将客户端降级到1.7时,您的问题可能会得到解决-由于版本1.8和1.7之间的不兼容,您必须删除本地存储库并再次同步它 SVN1.8包括一个新的HTTP客户端库(Serf) 我认为这是罪魁祸首。我已经安装了TortoiseSVN-1.8.6.25419-x64

我使用的是SVN1.8.9,在检查主干代码时,我发现以下错误

svn:E120106:ra_serf:服务器发送了一个截断的HTTP响应正文

由于上述错误,我无法签出整个中继代码。请建议解决此问题的方法


谢谢

您没有编写SVN服务器的版本。当您将客户端降级到1.7时,您的问题可能会得到解决-由于版本1.8和1.7之间的不兼容,您必须删除本地存储库并再次同步它

SVN1.8包括一个新的HTTP客户端库(Serf)


我认为这是罪魁祸首。我已经安装了
TortoiseSVN-1.8.6.25419-x64-svn-1.8.8。msi
和执行
svn merge
给出了相同的错误。起初我认为这是svn服务器超时的问题,但相同的合并操作适用于
1.6
。所以我想问题在于SVN版本1.8及以上请将您的svn客户端版本还原为1.7或1.6,然后重试

此错误的原因是打开服务器上的一个内部SVN文件失败。这是服务器问题,但不是bug

如果您的SVN服务器软件是Linux上的apache WebDAV扩展:

您需要转到服务器上的位置,apache存储存储库数据库的位置。使用
sudo chown-R www-data:www-data folder\u name
更改文件夹所有者。客户端提交的问题将消失


关于这个错误,我只知道这些。

当您通过svn webdav提供代码时,在大签出或大合并期间可能会发生这种情况。通常,延长服务器超时时间会有所帮助


我也遇到了同样的问题,因为这是一个大的结帐,但无法延长服务器超时时间,所以通过发出以下命令解决了问题:

$ svn cleanup
$ svn up
每次出现此错误时(直到签出完成)。

这是我的解决方案:

1-使用清理或sudo清理

svn cleanup
2-使用更新或sudo更新

svn update

这是与超时相关的apache服务器问题(SVN客户端无法工作,因为它需要大量的大文件)。将此处放在httpd.conf上,重新启动httpd,问题将得到解决,无需将来进行清理和更新:

Timeout 12000
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

尝试将http timeout client参数设置为较大的值,如下所述:

~/.subversion/服务器:

[global]
http-timeout = 6000

今天,通过使用SVN 1.9.9并通过SVN命令行从apache SVN服务器收集一些“差异”数据,我遇到了同样的问题。“Kompjuteras”建议如下设置apache配置参数[==以增加超时]:

“超时12000
保持活力
MaxKeepAliverRequests 100
保持超时15“

解决了问题(我没有将超时12000设置为3600[==1h])。此外,“Ethan Field”中还有一个关于参数含义的问题。这些问题在这里得到了很好的解释:

我认为这里描述的问题是由于SVN apache服务器上配置的“超时”太短造成的。(从2.4版开始,默认值仅为60==1分钟!!!!!)


祝你好运&非常感谢

可能有点晚,但如果您疯狂地用谷歌搜索这个问题,并且您的Subversion服务器最近更新为Debian Buster,您可能希望在Apache的Subversion存储库vhost中使用此选项试试运气:

SVNAllowBulkUpdates prefer
将其放在
SVNParentPath
指令之后,执行
sudo-service-apache2-reload
,然后再次尝试签出

资料来源:

此设置的作用(从中引用):

切换对更新样式报告的所有包含性响应的支持 请求。Subversion客户端使用报告请求获取信息 关于mod_dav_svn的目录树签出和更新。他们可以 要求服务器通过以下两种方式之一发送该信息:使用 在一次大规模响应中,或使用 skelta(树三角洲的骨架表示),仅包含 足够的信息让客户知道要添加哪些附加数据 来自服务器的请求。当此指令包含一个值时 如果关闭,mod_dav_svn将只响应这些报告请求 使用skelta响应,无论请求的响应类型如何 由客户提供

大多数人根本不需要使用这个指令。主要是 对于出于安全或审核原因希望 强制Subversion客户端单独获取所有文件和 更新和签出所需的目录,从而留下审核 Apache日志中GET和PROPFIND请求的跟踪。默认值 本指令的第1部分已打开


这听起来有点过时了。我怀疑,如果您有一个相当大的存储库,那么包含所有内容的报告的大小可能太大,无法传输,因此“大多数人根本不需要使用此指令”的评论不再适用。

在我的情况下,这是由SVN服务器和我的工作站之间的一些“透明”基础结构造成的。我怀疑这是一个代理(websense/mcafee/forcepoint)

大多数提交都很好,但它无法流式传输一个特别大的提交的内容,可能是内容太大,导致代理崩溃/断开连接


我可以绕过这个基础设施来解决这个问题。在我的例子中,我能够在我的.git/config中设置一个替代代理,绕过有问题的infra。

我不确定这一点,因为有时重试最终对我有效。Hi-Komp可能重复,欢迎使用!我最好解释一下你的代码片段在做什么,以及你为什么要这么做,这样你所谈论的语言和思想的新手会更容易理解。请注意,增加客户端的超时时间要容易得多