Cosa Linus intendeva quando ha detto che Git garantisce i file non siano danneggiati, si riferiva al fatto che, quando si fa riferimento a un particolare commit (identificata dal suo hash), si è garantito che sarà sempre fare riferimento allo stesso identico stato del repository. Se tu e tiri il kernel linux dall'albero di Linus, e si riferisce ad alcuni commit ae6bcd1 ..., non c'è nulla che tu possa fare (anche nel tuo repository locale) per fare mai commit ae6bcd1 ... sembra diverso dal impegno che Linus sta guardando quando si riferisce ad esso.
Inoltre, poiché un oggetto commit contiene riferimenti a (tutti) i suoi commit parent, quando si fa riferimento a un commit, si garantisce anche la sua cronologia completa nel DAG.
Per quanto riguarda la corruzione dei file, è una sorta di questione indipendente; ma senza corrompere gli oggetti blob effettivi (ad esempio .git/objects/ob/ject_hashname) se uno dei file dell'albero di lavoro viene danneggiato, sarà possibile ripristinare da uno stato di commit precedente o da uno stato di indice/cache.
In questo caso non sarà mai possibile corrompere un telecomando a meno che non si stiano facendo push forzati (che sovrascrivono la cronologia sui telecomandi), poiché push assicura che gli oggetti di commit formino un grafico cronologico continuo.
fonte
2009-06-16 08:35:33
Cosa succede se cercare di spingere a distanza? Prima di notare la corruzione, corrompe anche il telecomando o si lamenta di ciò? –
La spinta al telecomando implica il raggruppamento di tutti i file insieme e il ricevitore (dove si preme a) deve ricalcolare gli SHA1 di tutti i file. Quindi se un file è stato corrotto in qualche modo, gli ID degli oggetti negli alberi avrebbero iniziato a non corrispondere e il danneggiamento si sarebbe manifestato --- e puoi sempre tornare al punto in cui ti trovavi prima e fare un git fsck per trovare i problemi dalla tua parte . – araqnid
Infine, i file degli oggetti sono immutabili, quindi una volta scritti, non hanno mai cambiato il loro contenuto. L'unica operazione che si verifica è il reimballaggio, quindi non è possibile corrompere il telecomando premendo perché non scriverà un'altra copia di un file che già possiede. –