将非常大的repo推送到gitlab服务器

时间:2015-09-09 01:05:26

标签: git nginx gitlab

我有一个非常大的回购(因为二进制资产大于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,但同样的错误发生了。

有解决方法吗?我该怎么办?怎么能“一切都是最新的”?

3 个答案:

答案 0 :(得分:2)

检查config/unicorn.rb config

它包括:

# 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来减小存储库的大小:

Git, fatal: The remote end hung up unexpectedly

答案 2 :(得分:0)

上传4 GB存储库时,我遇到了同样的问题。 我写了这个蝙蝠脚本,按文件类型分阶段推送存储库。这个使 快很多。

对于Linux

git add **/*.$1
git commit -m "$1"
git push

对于Windows

set ext=%1
git add **/*.%ext%
git commit -m "%ext%"
git push

要上传我将使用的所有.js个文件

>>> this.bat js