Comment puis-je récupérer à partir de “fatal: de mémoire? mmap failed: Ne peut allouer de la mémoire” dans Git?

Permettez-moi de commencer par quelques-contexte:

J'ai eu à passer un crucial Magento boutique en ligne d'une nouvelle version. Pour être sûr que tout le code existant fonctionne encore après la mise à niveau et faire quelques post-mise à niveau des changements, j'ai fait un dépôt Git à partir de l'ensemble de l'installation de Magento (à l'exclusion évidente de contenu comme les 4.5 GO d'images, ./var répertoire etc.), poussé à une origine et cloné sur un serveur de dev. Fait une nouvelle branche, effectué les mises à jour, fait les changements de code, engage tout à la branche dev et repoussé à l'origine.

Le temps est maintenant venu de mettre à niveau la "vraie" boutique, cela signifie que je dois fusionner la branche master sur le serveur de production avec la branche dev. Et puis everyhing va mal:

git fetch - travaux

git branch dit: * master

git merge origin/dev va horriblement mal (sortie seulement après une certaine attente):

fatal: Out of memory? mmap failed: Cannot allocate memory

En va de même pour git checkout dev, git rebase master origin/dev etc.

Fait quelques recherches ici sur stackoverflow dans les questions existantes et passé une soirée à essayer des suggestions, y compris (mais non limité à):

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

et:

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)

En plus de la précédente commande, j'ai aussi essayé cette (ce qui est assez similaire).
Comme le lien fait mention d'un problème possible avec les systèmes 32 bits, c'est peut-être sage de mentionner les spécifications pour les trois systèmes:

  • 'dev' serveur: x86_64 Gentoo 2.6.38-durci-r6 //4 cœurs & 8 go de RAM
  • serveur "origine": x86_64 Gentoo 2.6.38-durci-r6 //2 coeurs & 4 go de RAM
  • 'live', serveur: Debian x86_64 4.3.2-1.1 2.6.35.5-pv1amd64 //(VPS) 2 carottes & 3 go de RAM

Personne ne sait comment je peux récupérer à partir de cela? Ne remballage sur l'origine? Si oui, comment puis-je convaincre le serveur de production pour extraire une nouvelle copie du référentiel?
Toute aide serait grandement appréciée!

A eu un problème similaire et remballage de sauvé mon repo, merci!

OriginalL'auteur Rem.co | 2011-07-21