Как я могу импортировать файл дампа 72 ГБ в git?
Я перенес старый репозиторий cvs с помощью cvs2git (cvs2svn). Полученный файл дампа теперь имеет размер 72 ГБ, и мои попытки импортировать дамп с помощью git fast-import всегда терпят неудачу из-за ошибки нехватки памяти:
фатальный: недостаточно памяти, malloc не удалось (попытался выделить 6196691 байт)
быстрый импорт: выгрузка отчета о сбое в fast_import_crash_13097
ошибка: git-fast-import умер от сигнала 11
В результате моя система имеет 32 ГБ оперативной памяти и 50 ГБ подкачки. Я запускаю импорт в Red Hat 5.3 с Git 1.8.3.4 (gcc44, python2.6.8, cvs2svn2.4.0). Я также пытался ограничить размер стека и файловые дескрипторы, но ошибка памяти все еще существует.
У кого-нибудь есть идеи?
2 ответа
Идея состоит в том, чтобы:
- разделить репозиторий cvs (каждый репо должен представлять " согласованный компонент")
- очистите его содержимое (любой большой двоичный файл, который может быть регенерирован или сохранен в другом месте в ссылочной артефакте, должен быть исключен из репозитория cvs), поскольку git плохо работает с большими файлами.
Затем вы должны импортировать репозитории cvs (sub) в отдельные репозитории git.
Поскольку git распространяется, а не централизован, вы хотите сохранить размер каждого git-репо разумным.
Я тоже столкнулся с той же проблемой, но теперь она решена. Пожалуйста, скачайте последнюю версию cvs2svn, в которой есть исправление, позволяющее значительно уменьшить размер дампа. Это уменьшает метаданные для фиксации символов. Версия cvs2git версии 2.5 или новее.
(Вы можете просмотреть изменения, сделанные в https://github.com/mhagger/cvs2svn/commit/fd177d0151f00b028b4a0df21e0c8b7096f4246b)