01 Nov 2017

Что делать на если нехватает памяти для git

Category howto
Tags #tips #git

Однажды случилась такая история, на слабом инстансе Digital Ocean и большом количестве файлов запушенном в одном коммите, git’у нехватило свободной памяти при git pull, и автоматизированный деплой с помошью capistrano отвалился с ошибкой о том что нехватает памяти

fatal: Out of memory, malloc failed (tried to allocate 493791736 bytes)
fatal: index-pack failed
error: Could not fetch origin
git stderr: Nothing written

И простой способо обойти ограничение по памяти это уменьшить размеры буферов, добавив в рабочую директорию в конфиг .git/config следующие настройки:

[pack] 
        windowMemory = 1m 
        packSizeLimit = 1m 
        deltaCacheSize = 1m 
        deltaCacheLimit = 10 
        packSizeLimit = 1m 
        threads = 1 
[core] 
        packedGitWindowSize = 1m 
        packedGitLimit = 1m 
        deltaBaseCacheLimit = 1m 
        compression = 0 
        loosecompression = 0 
        bigFileThreshold = 10m 
[http] 
        sslVerify = false ;; !!!
[transfer] 
        unpackLimit = 10 

После этого все будет работать. Незаюывайте что это нужно прописывать в конфиг той машины на которой происходить запуск git pull, в случае capistrano это будет диреткория repo/.git

EOF

Comments