2013-08-14 3 views
3

Я перенесла старый репозиторий cvs (около 13 ГБ) на git (около 2,7 ГБ). Но я не могу клонировать репо с моей 32-разрядной рабочей станцией. Я получаю ошибку из памяти (malloc не смог выделить около 6 МБ). Есть ли возможность исправить это?Как я могу клонировать git-репозиторий с 32-битной машиной?

remote: counting objects: 1227276, done. 
remote: Compressing objects: 100% (217540/217540), done. 
Receiving objects: 100% (1227276/1227276), 2,66GiB | 791.00KiB/s, done. 
remote: Total 1227276 (delta 787852), reused 1227276 (delta 787852) 
Resolving deltas: 100% (787852(787852), done. 
fatal: Out of memory, malloc failed (tried to allocate 6838754 bytes) 
fatal: remote did not send all necessary objects 

Сервер: Rhel63 64bit; Wokstation: Win XP 32bit, 2GB RAM; Git: 1.8.3.4 на обоих.

Update1: Теперь я переупаковал файл большого пакета размером 2,8 ГБ на сервере в файлы большого пакета размером 500 МБ. Но на стороне клиента это не влияет на клон. Он создает только один файл большого пакета размером 2,8 ГБ. Как я могу описать процесс git clone для меньших пакетов-файлов пользователя или создать пакетные файлы по мере их размещения на сервере? - Интересный аспект для меня: размер получаемых объектов уменьшается до 1,5 ГБ.

Update2: Теперь, после некоторого исследования и анализа времени, я думаю, что основная проблема заключается в том, что процесс клонирования git не может обрабатывать один большой файл пакета на моей 32-разрядной рабочей станции. Но как я могу настроить процесс клонирования, чтобы получить несколько файлов с меньшим размером? На стороне сервера он отлично работает с командой repack, но это не влияет на клиентскую сторону.

Обновление 3: Теперь у меня есть 1,6 ГБ большой годовой репо (с использованием git gc --aggressive --prune=now). Но ошибка с отсутствием памяти все еще была. Поэтому я попытался разделить репо. Таким образом, я использовал git rm с git commit -a. Таким образом, размер обоих новых голых репозиториев равен старой центральной. Но теперь клонирование с рабочей станции действительно работает. Потребление памяти теперь постоянное < 300MB. Прежде чем он станет неостановимым.

Теперь мои вопросы: почему процесс клонирования теперь заканчивается без проблем?

+0

Вы проверили некоторые другие подобные вопросы о настройке Git ?: http://stackoverflow.com/questions/10292903/git-on-windows-out-of-memory-malloc-failed/12808378#12808378 http: //stackoverflow.com/questions/7607970/git-clone-fails-with-out-of-memory-error-fatal-out-of-memory-malloc-failed https://github.com/gitextensions/gitextensions/issues/1632 –

+0

Да, но это не могло мне помочь. Я добавил сообщение об ошибке, которое я получил, пытаясь скрыть клон. – user2451418

+0

Теперь я пробовал несколько настроек конфигурации git, таких как'pack.packSizeLimit = 256m pack.windowMemory = 256m pack.deltaCacheSize = 256m core.packedGitLimit = 256m core.packedGitWindowSize = 256m transfer.unpackLimit = 100000', как предполагалось, в аналогичных сообщениях в Интернете , Но сообщение об ошибке все еще есть. Только размер был сжат с 6 до 4 мб, который git не может выделить. Я сделал конфигурацию на сервере, на стороне клиента, а также во время процесса клонирования. Но ничего не работает. – user2451418

ответ

1

Во всяком случае, вы можете архивировать каталог .git, затем scp его локально, а затем разархивировать его. И так есть ваш клонированный репозиторий.

Как только он работает с командой git, затем подключитесь к удаленному репозиторию, используя «git remote add». Вы должны уметь тянуть и толкать в этот момент. Я не уверен, что это вполне удовлетворительно, однако, если вам нужно повторить этот процесс.

+0

спасибо. Да, это определенно возможность. Но проблема в том, что мне нужно сделать репозиторий доступным для 30 человек. Так что это обходное решение, возможно, слишком неудобно. Должен быть способ обработать хранилище объемом 3 ГБ. В худшем случае я думаю, что мне нужно разделить репо на части. Но проблема в том, что тогда изменение, возможно, слишком велико в отношении команды проекта. Потому что большинство людей знакомы только с cvs. – user2451418

Смежные вопросы