Позвольте мне начать с некоторого контекста:
Мне пришлось обновить ключевой веб-магазин Magento до новой версии. Чтобы убедиться, что весь существующий код по-прежнему будет работать после обновления и внесет некоторые изменения после обновления, я сделал репозиторий Git со всей установки Magento (за исключением очевидного контента, такого как 4,5 ГБ изображений, каталог. /var и т.д.), подтолкнули его к происхождению и клонировали его на dev-сервере. Создал новую ветку, выполнял обновления, делал изменения кода, передавал все это ветки dev и возвращал ее в исходное положение.
Теперь пришло время обновить "настоящий" магазин, то есть мне нужно объединить главную ветвь на производственном сервере с веткой dev. И тогда все идет не так:
git fetch
- работает
git branch
говорит: * master
git merge origin/dev
идет ужасно неправильно (выводится только после некоторого ожидания):
fatal: Out of memory? mmap failed: Cannot allocate memory
То же самое относится к git checkout dev
, git rebase master origin/dev
и т.д.
Было ли какое-то исследование здесь в stackoverflow в существующих вопросах и провел вечер попыток предложений, в том числе (но не ограничиваясь этим):
git gc
Counting objects: 48154, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (37152/37152), done.
fatal: Out of memory, malloc failed (tried to allocate 527338875 bytes)
error: failed to run repack
и
git repack -a -d --window-memory 10m --max-pack-size 20m
Counting objects: 48154, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (37152/37152), done.
fatal: Out of memory, malloc failed (tried to allocate 527338875 bytes)
В дополнение к предыдущей команде я также попробовал этот (что очень похоже). Поскольку ссылка упоминает о возможной проблеме с 32-битными системами, возможно, было бы целесообразно упомянуть спецификации для трех задействованных систем:
- 'dev' сервер: x86_64 Gentoo 2.6.38-hardened-r6//4 ядра и 8 ГБ ОЗУ
- 'origin' server: x86_64 Gentoo 2.6.38-hardened-r6//2 ядра и 4 ГБ ОЗУ
- 'live' server: x86_64 Debian 4.3.2-1.1 2.6.35.5-pv1amd64//(VPS) 2 ядра и 3 ГБ оперативной памяти
Кто-нибудь знает, как я могу оправиться от этого? Работает ли переупаковка по происхождению? Если это так, как я могу убедить производственный сервер получить новую копию репозитория? Любая помощь будет принята с благодарностью!