le clone git échoue avec "index-pack"?

donc j'ai créé un rapport à distance qui est pas nu (parce que j'ai besoin de redmine pour pouvoir le lire), et c'est réglé pour être partagé avec le groupe (donc git init --shared=group). J'ai pu appuyer sur la télécommande et j'essaie de la cloner.

si je le clone sur le net je reçois ceci:

remote: Counting objects: 4648, done.
remote: Compressing objects: 100% (2837/2837), done.
error: git-upload-pack: git-pack-objects died with error.B/s  
fatal: git-upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: index-pack failed

je suis capable de cloner localement sans problème, et j'ai couru "git fsck", qui ne signale que quelques bancales les arbres / blobs, que je comprends ne sont pas un problème. Ce pourrait être la cause? Je suis encore capable de m'en tirer, mais pas de cloner. Je devrais noter que la version distante de Git est 1.5.6.5 tandis que la version locale est 1.6.0.4

j'ai essayé de cloner ma copie locale du repo, en enlevant le .git dossier et en le poussant vers un nouveau repo, puis cloner le repo et nouvelles que je reçois la même erreur, ce qui m'amène à croire qu'il peut être un fichier dans le repo qui est à l'origine git-upload-pack à l'échec...

Edit: J'ai un certain nombre de binaires windows dans le repo, parce que j'ai juste construit les modules python et puis je les ai collés là-dedans pour que tout le monde n'ait pas à les construire aussi bien. Si je retire les binaires de windows et que je pousse vers un nouveau repo, je peux cloner à nouveau, peut-être que ça donne un indice. Cherche à circonscrire exactement ce fichier est à l'origine du problème.

44
demandé sur Martin Tournoij 2009-12-22 05:56:44

11 réponses

la façon dont j'ai résolu ce problème est la suivante: mon démon git tourne sur windows, et les clients sont sur d'autres ordinateurs.

j'ai trouvé une solution de contournement (mais cela ne fonctionnera que sur windows).

Démarrer git daemon avec des informations détaillées à partir de cmd.exe:

"C:\Program Files\Git\bin\sh.exe" --login -i -c 'git.exe daemon --verbose  '

non testé, s'il fonctionne directement en git bash. Peut-être qu'elle le fera.

puis (avant de lancer un clone, tirez, fetch,...) sélectionnez du texte dans la fenêtre (note: "Quick Edit Mode" doit être activé (peut être trouvé dans: cmd.exe -- > Properties (cliquez sur le coin supérieur gauche de votre fenêtre cmd) --> Edit Options)) dans lequel le démon git s'exécute. Cela l'empêchera d'imprimer d'autres messages dans cette fenêtre.

lorsque le thread de sortie du démon git est bloqué de cette façon, alors l'erreur ne se produit pas

21
répondu Martin 2014-12-11 21:09:27

j'ai le même problème que vous; le message d'erreur quand je clone i:

Cloning into test...
remote: Counting objects: 6503, done.
remote: Compressing objects: 100% (4519/4519), done.
Connection to git.myhost.im closed by remote host.| 350 KiB/s
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

dans mon cas, la raison est que la taille de mon dépôt (200M) est plus grande que la mémoire de mon serveur git (128M). Lorsque j'ai cliqué à partir du serveur git , j'utilise la commande top sur mon serveur, ce qui montre que l'utilisation de la mémoire est bientôt supérieure à 128M.

quand j'utilise un autre serveur qui a de la mémoire 4G, le git clone est tout à fait correct. Vous pourriez aussi essayer ajouter plus d'espace de swap à votre sever.

14
répondu andywu 2014-12-11 21:40:43

est-ce que" git gc " se plaint?

12
répondu Yann Ramin 2009-12-22 08:50:35

j'ai eu le même problème. Je pense aussi que cela a à voir avec le fait que j'utilise le mode texte/CRLF pour les fichiers créés. Et en effet, après avoir commuté CygWin en mode UNIX / newline binaire, Tout fonctionne très bien.

voir:

BTW, la façon la plus facile pour moi de changer le mode de fichier était de modifier / etc/fstab pour passer de

none /cygdrive cygdrive texte,posix=0,l'utilisateur 0 0

à

none / cygdrive cygdrive binaire, posix=0, user 0 0

4
répondu Nicolai Josuttis 2012-12-10 20:32:27

utiliser GIT_TRACE variable d'environnement pour obtenir la sortie de débogage. Définissez le à "1" pour tracer jusqu'à stderr ou un chemin absolu pour tracer jusqu'au fichier.

3
répondu ivan_pozdeev 2012-07-08 23:37:07

j'ai aussi eu des problèmes avec cygwin git, l'erreur: fatal: index-pack failed ,

j'ai pu le résoudre en créant un montage pour mes projets et en le mettant en mode binaire. depuis mon /c est mis en mode texte.

ajouter cygwin's à /etc/fstab :

c:/work/Projects /projects some_fs binary 0 0

exécuter mount -a pour monter tous les disques durs.

Vous devez être dans /projects de travailler avec cygwin git , /c/work/Projects échouent.

Je ne suis pas sûr que cela fonctionne pour vous.

3
répondu mpmeyer 2014-12-11 21:42:57

j'ai mis à jour la source git de mon ordinateur client à la même version que le serveur est en cours d'exécution et qui a corrigé cela pour moi.

0
répondu Jim Geurts 2013-02-21 20:01:42

j'ai le même problème et je changerais mes git configs et cela fonctionne très bien:

git config -- global pack.packSizeLimit 50m

git config -- global pack.windowMemory 50m

git config -- global core.compression 9

0
répondu Flávio H. Ferreira 2017-02-15 19:45:27

git-daemon problème semble avoir été résolu dans v2.17.0 (vérifié avec un non travail v2.16.2.1). C'est-à-dire: il ne devrait plus être nécessaire de contourner la sélection de texte dans la console pour "verrouiller le tampon de sortie".

de https://github.com/git/git/blob/v2.17.0/Documentation/RelNotes/2.17.0.txt :

  • correspond à"git daemon". (fusionner ed15e58efe jk / daemon-correctifs plus tard, à maint).
0
répondu GreenMoose 2018-05-02 13:45:37

j'ai eu ce problème ou près de lui mais n'ai pas vu la solution à mon cas dans aucun de ces fils.

Dans mon cas, le problème était le pare-feu. Le clonage de petits dépôts a fonctionné de toute façon, mais les plus gros ont échoué. Donc si rien d'autre n'aide, les paramètres du pare-feu valent la peine d'être vérifiés.

0
répondu Lasse Lindqvist 2018-09-24 14:53:56

Je résous ce problème en fixant la permission du dossier:

sudo chmod 777 -R Your_folder
-1
répondu Lafriakh 2017-07-21 22:28:30