git clone fallisce con “index-pack” fallito?

Così ho creato un repository remoto che non è nullo (perché ho bisogno di redmine per essere in grado di leggerlo), ed è impostato per essere condiviso con il gruppo (quindi git init –shared = group). Sono stato in grado di spingere al repository remoto e ora sto cercando di clonarlo.

Se lo clone sulla rete ottengo questo:

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 

Sono in grado di clonarlo localmente senza problemi, e ho eseguito “git fsck”, che riporta solo alcuni alberi penzolanti / BLOB, che capisco non sono un problema. Che cosa potrebbe causare questo? Sono ancora in grado di tirarlo fuori, solo non clonare. Dovrei notare che la versione git remota è 1.5.6.5 mentre local è 1.6.0.4

Ho provato a clonare la mia copia locale del repository, estrapolando la cartella .git e spingendo a un nuovo repository, poi clonando il nuovo repository e ricevo lo stesso errore, il che mi porta a credere che potrebbe trattarsi di un file nel repository che sta causando git-upload-pack fallire …

Modifica: ho un numero di file binari di Windows nel repository, perché ho appena creato i moduli python e li ho bloccati lì in modo che tutti gli altri non debbano costruirli. Se rimuovo i binari di Windows e spingo su un nuovo repository, posso clonare di nuovo, forse questo è un indizio. Cercando di restringere esattamente quale file sta causando il problema ora.

Il modo in cui ho risolto questo problema è il seguente: My git daemon è in esecuzione su Windows e i client si trovano su altri computer.

Ho trovato una soluzione alternativa (ma funzionerà solo su Windows).

Avvia git daemon con verbose da cmd.exe:

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

Non testato, se funziona direttamente in git bash. Forse lo farà.

Quindi (prima di iniziare qualsiasi clone, pull, fetch, …) seleziona un testo nella finestra (nota: “Quick Edit Mode” deve essere abilitato (può essere trovato in: cmd.exe -> Proprietà (clicca in alto a sinistra) angolo della finestra di cmd) -> Modifica opzioni)) in cui gite daemon git. Ciò gli impedirà di stampare ulteriori messaggi in quella finestra.

Quando il thread di output di git daemon è bloccato in questo modo, l’errore non si verifica

Ho il tuo stesso problema; il messaggio di errore quando clonò 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 

Nel mio caso, il motivo è che la dimensione del mio repository (200M) è più grande della memoria del mio git server (128M). Quando eseguo il clone dal server git , utilizzo il comando top sul mio server, che mostra che l’utilizzo della memoria è presto superiore a 128M.

Quando uso un altro server con memoria 4G, il git clone va tutto bene. Potresti anche provare ad aggiungere più spazio di swap al tuo server.

“Git gc” si lamenta?

Ho avuto lo stesso problema. La mia ipotesi è stata che questo abbia a che fare con il fatto che io uso la modalità text / CRLF per i file creati. E infatti, dopo aver cambiato CygWin in UNIX / modalità newline binaria, tutto funziona perfettamente.

Vedere:

A proposito, il modo più semplice per me per cambiare la modalità file era modificare / etc / fstab per passare da

none / cygdrive cygdrive text, posix = 0, utente 0 0

a

nessuno / cygdrive cygdrive binario, posix = 0, utente 0 0

Usa la variabile d’ambiente GIT_TRACE per ottenere l’output di debug. Impostalo su “1” per tracciare su stderr o su un percorso assoluto da tracciare sul file.

Ho anche avuto problemi con cygwin git, l’errore: fatal: index-pack failed ,

Sono stato in grado di risolverlo creando una montatura per i miei progetti e impostandola in modalità binaria. poiché il mio /c è impostato in modalità testo.

Aggiungi cygwin a /etc/fstab :

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

eseguire mount -a per montare tutte le unità.

Devi essere in /projects per lavorare con cygwin git , /c/work/Projects fallirà.

Non sono sicuro se questo funzionerà per te.

Ho aggiornato la sorgente git del mio computer client alla stessa versione che il server è in esecuzione e che ha risolto questo problema per me.

Ho lo stesso problema e cambierei le mie configurazioni git e questo ha funzionato bene:

git config –global pack.packSizeLimit 50m
git config –global pack.windowMemory 50m
git config –global core.compression 9

Il problema git-daemon sembra essere stato risolto nella v2.17.0 (verificato con una v2.16.2.1 non funzionante). Cioè la soluzione alternativa di selezionare il testo in console per “bloccare il buffer di output” non dovrebbe più essere richiesta.

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

  • Correzioni assortite a “git daemon”. (unire ed15e58efe jk / daemon-ripara più tardi a maint).

Risolvo questo problema risolvendo il permesso della cartella:

 sudo chmod 777 -R Your_folder