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.
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
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.
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:
- http://cygwin.com/cygwin-ug-net/using-textbinary.html
- http://www.sourceware.org/cygwin/cygwin-ug-net/using-utils.html#mount
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
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.
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.
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.
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
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).
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.
Je résous ce problème en fixant la permission du dossier:
sudo chmod 777 -R Your_folder