Git推 - 次优包 - 内存不足
我真的可以在这里使用一些帮助。Git推 - 次优包 - 内存不足
我刚刚创建了一个新的裸回购作为开发推送的生产目标。 我也有服务器上的工作网页目录作为git回购。 服务器在centos5.5上运行git 1.7.4.1
在web目录中创建新的回购后,我执行了一个git add。 它收集了一些像2300 &一些奇数文件&超过230k插入。
我做了一个新添加的文件库的提交。去了很好,干净。 当我做了一个git push origin master的时候,它一直给我这个(请注意,我有8个CPU,因此8个线程.docs说这是正常的)。
# 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'
我已经尝试了以下事情来解决这个问题,但都产生相同的结果;
git repack -adf --window-memory=100m
^tried running this up to 1024m. Same result.
即使尝试了推力,但得到了同样的东西,只有一个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'
我一直在为此工作了2天,并尝试了几乎所有我可以在谷歌和这里搜索。
我已经达到了自己的目的,试图让这个问题得到解决。请告诉我,外面有人知道做什么可以做这项工作?
- 可能是git是处理大量大块的次优工具。
- 您可以禁用多线程压缩到内存保存:
git config pack.threads 1
(除了在新的Git到其他内存限制的选项,比如core.bigfilethreshold
)
Well Vi ...在北极夏季,git运行速度比沿着管道运行的糖蜜慢,但它工作。谢谢! – Skittles 2012-03-06 00:02:06
你可以考虑将git repo中的大件事物(仍然是对它们进行版本控制)进行外部化,或者对任务使用其他方法。 Git可能试图在您的所有数据中找到类似的块。尝试调整'core.bigfilethreshold'选项(git> = v1.7.6) – 2012-03-06 01:42:25
再次感谢,Vi!不幸的是,我正在使用v1.7.4.1。但是我会把它保留在我的Git知识项目的顶部。 – Skittles 2012-03-06 02:19:44
我有同样的问题了Git的克隆。回购是25GB。我用了一个替代的命令,对我来说,所需的源根控制,
rsync -avz -e ssh --progress [email protected]:repo/Directory destination/folder
在此之后,我能够承诺和拉就像任何其他的存储库。
git config --global pack.threads 1
这是唯一对我有用的东西。呃,我讨厌仍然需要处理旧的共享服务器。 – 2015-05-14 10:28:40
我意识到这有点迟,但由于上面的一些帮助我(谢谢@Ashitakalax),这里是我的两分钱。 与上面相同的问题(inflateInit:内存不足)将Wordpress开发实例上游的更改从上游移动到测试时,git由于内存不足而中止,这通常是由于../uploads/目录中存储图像文件的更改所致。所有这一切都没有进入全球混帐配置一个共享的主机,所以我们做的:
0- in repo: git commit -m "some relevant details"
以记录更改
1- rsync -av --progress repo/wp-content/uploads/ test/wp-content/uploads
移动批量图像修正/改变
2- in test: git add -A
跟踪对事物的测试端的新东西
3- in test: git fetch origin
现在从回购
4- in test: git merge origin/master
,最后合并取休息...
rsync的位减轻混帐负荷和一切正常。
以下命令解决了该问题对我来说:
git config --global pack.windowMemory 256m
这会影响增量压缩的效果,所以你可能想先尝试大一号的,像1G,这取决于你的硬件和带宽。
更多细节在这里:https://www.kernel.org/pub/software/scm/git/docs/git-pack-objects.html
这个答案都不帮我。我的问题是,我的小服务器有1GB的RAM和没有交换。我制作了sudo service apache2 stop
& sudo service mysql stop
+从htop
(完成后我得到~100mb的RAM)和git push
正确的杀死一个未使用的进程。
可以肯定的是,这与'postBuffer'无关? http://*.com/questions/6842687/the-remote-end-hung-up-unexpectedly-while-git-cloning/6849424#6849424 – VonC 2012-03-05 09:00:08
请解释一下你的意思,VonC,因为这对我而言是一个新词尊重Git。 – Skittles 2012-03-06 02:20:58
我想知道'git config --global http.postBuffer 524288000'将无法让你的推送工作。 – VonC 2012-03-06 06:41:34