我有一个非常大的回购(因为二进制资产大于1GB),gitlab服务器安装正确(医生报告都没问题),我创建了一个小的git repo,工作正常,推拉等等。
Username for 'http://x.y.z': tyoc213
Password for 'http://tyoc213@x.y.z':
Counting objects: 4894, done.
Compressing objects: 100% (4872/4872), done.
error: RPC failed; result=55, HTTP code = 0
fatal: The remote end hung up unexpectedly
Writing objects: 100% (4894/4894), 506.89 MiB | 12.27 MiB/s, done.
Total 4894 (delta 2104), reused 0 (delta 0)
fatal: The remote end hung up unexpectedly
Everything up-to-date
我试图改变git config http.postBuffer 5000
甚至更大。
我甚至试图将它从服务器内部(我的意思是我已经在服务器内部使用git repo)推送到gitlab,但同样的错误发生了。
有解决方法吗?我该怎么办?怎么能“一切都是最新的”?
答案 0 :(得分:2)
它包括:
# nuke workers after 30 seconds instead of 60 seconds (the default)
#
# NOTICE: git push over http depends on this value.
# If you want be able to push huge amount of data to git repository over http
# you will have to increase this value too.
#
# Example of output if you try to push 1GB repo to GitLab over http.
# -> git push http://gitlab.... master
#
# error: RPC failed; result=18, HTTP code = 200
# fatal: The remote end hung up unexpectedly
# fatal: The remote end hung up unexpectedly
这不是完全相同的错误,但问题可能是相关的 Check your unicorn logs
对于" RPC failed; result=55
",请参阅my old answer,然后尝试提高日志级别(GIT_CURL_VERBOSE=1 git push
,请参阅this example)和/或切换到如果问题仍然存在,请使用ssh进行测试。
如果您在unicor日志中看不到任何内容,则表示Gitlab永远不会到达。
如果你面前有NGiNX,常见问题是its config for allowing large files。寻找 client_max_body_size xxM;
,并增加该值。
答案 1 :(得分:1)
使用非常大的存储库时的另一个选择是分阶段推送它。有一个Amazon AWS CodeCommit示例脚本可以创建标记(将存储库批处理到每个X#提交中),然后在标记之间推送提交。
位于:
http://docs.aws.amazon.com/codecommit/latest/userguide/how-to-push-large-repositories.html#how-to-push-large-repositories-sample
此网址还有其他一些选项,包括在推送之前使用git gc --aggressive
来减小存储库的大小:
答案 2 :(得分:0)
上传4 GB存储库时,我遇到了同样的问题。 我写了这个蝙蝠脚本,按文件类型分阶段推送存储库。这个使 快很多。
git add **/*.$1
git commit -m "$1"
git push
set ext=%1
git add **/*.%ext%
git commit -m "%ext%"
git push
要上传我将使用的所有.js
个文件
>>> this.bat js