Git clone завершается с ошибкой нехватки памяти - «фатально: недостаточно памяти, malloc не выполнен (попытка выделить 905574791 байт) / fatal: index-pack не удалось» - PullRequest
15 голосов
/ 30 сентября 2011

Я пытаюсь клонировать большой (1,4 ГБ) Git-репозиторий на 32-битную виртуальную машину Debian с 384 МБ ОЗУ. Я использую Git 1.7.2.5 и использую протокол SSH для клонирования ('git clone user@host.com: / my / repo')

Клон завершается с этим сообщением:

remote: Counting objects: 18797, done.
remote: warning: subobtimal pack - out of memory
remote: Compressing objects: 100% (10363/10363), done.
fatal: out of memory, malloc failed (tried to allocate 905574791 bytes)
fatal: index-pack failed

Я попытался уменьшить объем памяти, используемой Git для перепаковки на конце репозитория хоста, и перепаковать:

git config pack.windowMemory 10m
git config pack.packSizeLimit 20m
git repack -a -d

Мои вопросы следующие:

  1. Это проблема размера клиента (на стороне клона) или она должна быть решена в репозитории, из которого я клонирую?
  2. В любом случае, что я могу сделать, чтобы клон преуспел? Многие потенциальные решения онлайн включают некоторые / все из следующих вещей, ни одно из которых не является приемлемым в этом случае:

    • существенное изменение содержимого репозитория (т.е. удаление больших файлов)
    • давая ВМ, которая делает клон больше ОЗУ
    • предоставление виртуальной машине, выполняющей клон, 64-разрядного виртуального процессора
    • передача вне диапазона (например, с помощью Rsync или SFTP для передачи каталога .git)

Заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 30 сентября 2011

git clone не будет смотреть на вашу настройку pack.packSizeLimit, она все равно будет передавать все в одном пакете - если только он не изменился со времени моего последнего просмотра.

Использование SCP или Rsync может бытьспособ обойти вашу проблему действительно.Удаление «бесполезных» больших файлов, а затем перепаковка репозитория, который вы пытаетесь клонировать, также могут помочь.

Также может помочь выделение дополнительной оперативной памяти для виртуальной машины - я не думаю, что вам нужен 64-битный адреспространство для выделения 900 МБ ... Вы также можете выделить достаточно пространства SWAP для обработки пакета объемом 900 МБ вместо увеличения объема ОЗУ.

0 голосов
/ 25 апреля 2017

Сегодня у меня была такая же проблема. Серверу Git не хватило памяти, но gitlab сообщил, что память все еще доступна. Мы проверили память с помощью htop (сообщалось, что она недоступна), перезапустили gitlab и все вернулось в нормальное состояние.

0 голосов
/ 24 января 2015
sudo git pull

Я каждый раз получал одно и то же сообщение об ошибке, и sudo git pull фактически помог мне преодолеть это сообщение об ошибке, и получение прошло успешно.

0 голосов
/ 29 августа 2013

Я получил аналогичную проблему в Windows, используя MSysGit 32 бита. Git 64 бит от Cygwin сделал свою работу. Возможно, вам следует использовать 64-битную виртуальную машину Debian (вместо 32-битной).

Мой оригинальный ответ доступен на вопрос Git в Windows, «Недостаточно памяти - сбой malloc» .

...