Vous avez rencontré un problème avec le référentiel et essayé presque tous les paramètres de configuration possibles, par exemple. pack.WindowMemory etc etc
Je crois que quelqu'un a archivé un fichier volumineux dans un référentiel distant. À présent, chaque fois que j'essaie d'extraire ou de transmettre à ce fichier, GIT essaie de l'emballer et manque de mémoire:
Auto packing the repository for optimum performance. You may also
run "git gc" manually. See "git help gc" for more information.
Counting objects: 6279, done.
Compressing objects: 100% (6147/6147), done.
fatal: Out of memory, malloc failed (tried to allocate 1549040327 bytes)
error: failed to run repack
J'ai essayé git gc & git remballer avec diverses options mais renvoie toujours la même erreur.
Presque abandonné et sur le point de créer un nouveau dépôt, mais pensais que je demanderais d'abord autour de moi :)
J'ai trouvé une solution Ici cela a fonctionné pour moi.
Dans le fichier .git/config (client et/ou serveur), j'ai ajouté ceci:
[core]
packedGitLimit = 128m
packedGitWindowSize = 128m
[pack]
deltaCacheSize = 128m
packSizeLimit = 128m
windowMemory = 128m
Pour référence (vous l’avez peut-être déjà vu), l’affaire msysgit traitant de cette question est le ticket 292 .
Il suggère plusieurs solutions de contournement:
pack.window
à 0 . Bien sûr, cela rendra le référentiel beaucoup plus grand sur disque.delta
de la page de manuel sur gitattributes
.git config --global pack.threads 1
git config --global pack.windowMemory 256m
(vous avez déjà essayé celui-ci, mais également illustré dans " Erreur lors de l'extraction de l'avertissement: pack sous-optimal - mémoire insuffisante ")pack
.Pour désactiver la compression delta de certains fichiers, dans
.git/info/attributes
, ajoutez:
*.Zip binary -delta
From Page de manuel de Gitattributes :
La compression delta ne sera pas tentée pour les blobs pour les chemins avec l'attribut
delta
défini sur false.
Une solution de contournement plus simple consisterait peut-être en quelque sorte à réinitialiser l’historique avant la validation de ce fichier volumineux et à refaire les autres commits à partir de là.
EDIT: Depuis git-v2.5.0 (Août/2015), git-for-windows (anciennement MSysGit)
fournit versions 64 bits comme remarqué par Pan.student .
Dans cette réponse, je conseillais d'installer Cygwin 64 bits (version Git 64 bits).
J'ai eu un problème similaire avec Out of memory, malloc failed
en utilisant MSysGit lorsque j'ai atteint la barrière des 4 Go:
> git --version
git version 1.8.3.msysgit.0
> file path/Git/cmd/git
path/Git/cmd/git: PE32 executable for MS Windows (console) Intel 80386 32-bit
> time git clone --bare -v ssh://linuxhost/path/repo.git
Cloning into bare repository 'repo.git'...
remote: Counting objects: 1664490, done.
remote: Compressing objects: 100% (384843/384843), done.
remote: Total 1664490 (delta 1029586), reused 1664490 (delta 1029586)
Receiving objects: 100% (1664490/1664490), 550.96 MiB | 1.55 MiB/s, done.
Resolving deltas: 100% (1029586/1029586), done.
fatal: Out of memory, malloc failed (tried to allocate 4691583 bytes)
fatal: remote did not send all necessary objects
real 13m8.901s
user 0m0.000s
sys 0m0.015s
Enfin, git 64 bits de Cygwin corrige le:
> git --version
git version 1.7.9
> file /usr/bin/git
/usr/bin/git: PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows
> time git clone --bare -v ssh://linuxhost/path/repo.git
Cloning into bare repository 'repo.git'...
remote: Counting objects: 1664490, done.
remote: Compressing objects: 100% (384843/384843), done.
remote: Total 1664490 (delta 1029586), reused 1664490 (delta 1029586)
Receiving objects: 100% (1664490/1664490), 550.96 MiB | 9.19 MiB/s, done.
Resolving deltas: 100% (1029586/1029586), done.
real 13m9.451s
user 3m2.488s
sys 3m53.234s
FYI on linuxhost
64 bits:
repo.git> git config -l
[email protected]
core.repositoryformatversion=0
core.filemode=true
core.bare=true
repo.git> git --version
git version 1.8.3.4
repo.git> uname -a
Linux linuxhost 2.6.32-279.19.1.el6.x86_64 #1 SMP Sat Nov 24 14:35:28 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
Si ma réponse ne résout pas votre problème, vous pouvez également consulter ces pages:
Cela a fonctionné pour moi, mais je devais définir les options via la ligne de commande en utilisant:
git --global core\pack [param] value