2012-08-31 7 views
5

Quindi questa è la quinta volta che questo è successo nelle ultime tre settimane e io sono veramente perplesso sul perché questo continua ad accadere. Questo è il messaggio esatto ottengo quando faccio 'git status'errore: il file oggetto è vuoto .git/objects /../ .. è vuoto - fatale: oggetto sciolto ... è corrotto

error: object file .git/objects/48/088f00d90b0d27de65336bb9ed9a75b0cfed33 is empty 
fatal: loose object 48088f00d90b0d27de65336bb9ed9a75b0cfed33 (stored in .git/objects/48/088f00d90b0d27de65336bb9ed9a75b0cfed33) is corrupt 

Ho provato raccomandazioni come l'eliminazione dell'oggetto corrotto, ma poi lo stesso errore esce con un altro oggetto sciolto. Ogni volta che ho fatto questo, ci sono circa 30 oggetti sciolti che devo cancellare e poi mi dà ancora un errore dopo che tutti gli oggetti corrotti sono spariti.

Essendo la quinta volta che questo è successo, qualcosa deve essere sbagliato con git o qualcosa ad esso correlato. Ho provato a reinstallare git, ma ho comunque finito con gli oggetti corrotti. Sto usando una macchina virtuale con Ubuntu, se ciò causasse qualcosa di simile, non lo so. Ho anche provato a passare a Linux mint e ho anche risolto questo problema.

Alla fine ho sempre salvato le modifiche in un file di testo, eliminato il mio repository, estratto il nuovo repository da git hub e poi modificato le modifiche. Funziona ma richiede molto tempo e non è l'ideale. Non sono necessariamente alla ricerca di un modo per risolvere questo problema, ma piuttosto che cosa lo sta causando e su come impedire che accada di nuovo.

+0

Che file system stai usando? Il repository sul disco virtuale della VM o accessibile tramite NFS/CFS o un mount loopback o un mount ext2/ext3/jfs/reiserfs/xfs/... diretto di un dispositivo locale sull'host o su un disco SAN? Il file system in questione è pieno o abbastanza vicino da poter essere colpito completamente durante determinate operazioni? Eventuali errori del disco/filesystem nei tuoi messaggi/file syslog? – twalberg

+0

Sto utilizzando un disco rigido virtuale formattato su ext4 in cui è archiviato il repository. La capacità del VHD è di 100 GB e sono solo pari a 20 GB, quindi non sono affatto vicino a essere pieno. Nessun errore del file system ... –

+0

Vedere questa risposta eccellente, http://stackoverflow.com/a/12371337/23118, a più o meno lo stesso problema. – hlovdal

risposta

0

Questo normalmente non dovrebbe accadere, poiché git prima scrive il contenuto del file in un file temporaneo e quindi rinomina il file nella sua posizione finale. In pratica, ho visto file di oggetti Git vuoti a causa di un filesystem danneggiato (il vboxsf di VirtualBox, usato per la condivisione di cartelle, sembra essere il colpevole ogni volta che vedevo persone lamentarsi di file vuoti come questo).

L'impostazione da core.fsyncobjectfiles a true può essere d'aiuto.