GitLab出现“The remote end hung up unexpectedly”问题解决

10/26/2013

考虑到iPlacard和Info Flow日益庞大以及今后开发的需要,今天Kaijia在自己的服务器上安装了GitLab以实现更好的团队开发。安装完成后一切运行正常,但是当Kaijia要把iPlacard的SVN导入到GitLab时却遇到了问题。

Kaijia首先通过git svn命令将原有的SVN库转换为Git本地库,然后尝试将本地的Git提交到GitLab,Kaijia使用的命令是:

但是Shell显示的结果却是:

error: RPC failed; result=22, HTTP code = 413
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

Kaijia看了一下GitLab这次提交没有显示出来,说明这次提交中断了。于是Kaijia搜索了一下,发现也有人报告遇到“fatal: The remote end hung up unexpectedly”错误,但是报告的错误一般都是通过SSH连接GitLab的情况,而Kaijia是通过HTTPS(禁用SSH避免安全隐患)的。最后Kaijia在GitLab的Issue Tracker上找到了一个错误报告成功解决了这个问题。

Kaijia使用的是标准的安装步骤,使用了Nginx 1.4并且按照安装文档的提示使用了默认的配置文件:

而这个默认的lib/support/nginx/gitlab配置文件却没有设定允许的最大POST大小,因此Nginx使用了默认值2M为允许的最大POST大小,而Kaijia提交大小已经超过了2M,因此上传到一半会出现中断。明白原因后解决方法就非常简单了,只需要在GitLab Nginx配置文件(/etc/nginx/sites-available/gitlab)中的server段中增加:

将128M修改为你希望允许的最大POST大小,保持配置文件后重新启动Nginx,就可以正常上传了。