Git推 - 次优包 - 内存不足

Ski*_*les 17 memory git git-push

我真的可以在这里使用一些帮助.

我刚刚创建了一个新的裸仓库,作为开发推送的生产目标.我还将服务器上的工作web目录作为git repo.服务器在centos5.5上运行git 1.7.4.1

在web目录中创建新的repo后,我执行了一个git add.它记录了像2300和一些奇怪的文件和超过230k插入的东西.

我做了新添加的文件库的提交.很干净.当我做了一个git push origin master时,它一直给我这个(请注意,我有8个CPU,因此有8个线程.文档说这是正常的);

# git push --mirror
Counting objects: 2000, done.
Delta compression using up to 8 threads.
warning: suboptimal pack - out of memory
fatal: inflateInit: out of memory (no message)
error: failed to push some refs to '/home/ggadmin/gg-prod.git'
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下方法来解决这个问题,但都会产生相同的结果;

git repack -adf --window-memory=100m
                                ^ tried running this up to 1024m. Same result.
Run Code Online (Sandbox Code Playgroud)

甚至试过了一个强制推动,但得到了相同的东西,只有一个malloc错误;

# git push -f origin master
Counting objects: 2000, done.
Delta compression using up to 8 threads.
warning: suboptimal pack - out of memory
fatal: Out of memory, malloc failed (tried to allocate 2340 bytes)
error: failed to push some refs to '/home/ggadmin/gg-prod.git'
Run Code Online (Sandbox Code Playgroud)

我已经在这个工作了2天了,并尝试了我可以在谷歌和SO在这里找到的所有东西.

试图解决这个问题,我已经达成了我的智慧.请告诉我那里有人知道可以做些什么让这项工作成功?

Vi.*_*Vi. 18

  1. 可能是git是处理大量大blob的次优工具.
  2. 您可以禁用多线程压缩以节省内存:( git config pack.threads 1除了其他内存限制选项,如core.bigfilethreshold在较新的Git中)

  • 在北极的一个夏天,Vi ... git的运行速度比糖蜜在管道中的运行慢,但它确实有效。谢谢! (2认同)

ker*_*rli 12

以下命令为我解决了这个问题:

git config --global pack.windowMemory 256m
Run Code Online (Sandbox Code Playgroud)

这会影响增量压缩的有效性,因此您可能需要先尝试更大的尺寸,例如1g,具体取决于您的硬件和带宽.

更多细节:https://www.kernel.org/pub/software/scm/git/docs/git-pack-objects.html


小智 7

git config --global pack.threads 1
Run Code Online (Sandbox Code Playgroud)