My advice is to try several git parameters related with pack:
[pack]
threads = 1
deltaCacheSize = 128m
windowMemory = 50m
What it got better results for me was setting git config pack.threads 1
and git config pack.windowMemory 50m
(default is 10m).
Still, my host didn't have enough RAM memory (2GB) and kept failing. I hard copied the repo and moved it to another machine with more RAM (8GB). It got better but still failed.
Finally, I downloaded the latest version of git (https://github.com/git/git), compile it and install it. That fixed the problem just by running git repack -adf
with the same parameters. After that I run git gc --aggressive --prune=now
Once I got the repo fixed in my local machine I pushed it to master, overwriting the remote repo, git push -f origin master
.
To prevent similar errors in the future try not to add unnecessary large files to the repo (in my case I got a SQL dump of 3.5GB :)) and disable delta compression for large files (such as images, PDFs, videos). Add the following lines to .gitattributes
:
link:https://stackoverflow.com/questions/8855317/git-push-out-of-memory-malloc-failed