Clone Git "controllo della connettività" - che cos'è?


11

Quando si esegue un git clonerepository su SSH o HTTP, si ottiene un output simile al seguente:

Cloning into 'some_directory'...
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 7 (delta 0), reused 5 (delta 0), pack-reused 0
Unpacking objects: 100% (7/7), done.
Checking connectivity... done.

Sono interessato all'ultimo passaggio "Verifica della connettività". Succede dopo che il repository e tutti i suoi metadati sono stati scaricati, vale a dire ben dopo aver terminato qualsiasi connessione a Internet.

Cosa sta realizzando esattamente questa fase del processo?


1
Hai notato il Checking out files: 100% (2897/2897), done.dopo Checking connectivity? Sembra che in Receiving objectsrealtà non significhi ricevere il contenuto. Per esempio, quando ho clonato git, ho avuto questa linea di uscita: Receiving objects: 100% (199562/199562), 84.06 MiB | 3.90 MiB/s, done.. Tuttavia, quando ho scaricato un zip da GitHub, la directory decompressa era solo 28 MiB. Non sono sicuro di cosa significhi, ma potrebbe essere il riassunto di tutti gli impegni passati o qualcosa del genere.
ecube,

1
@ecube: la clonazione di un repository git implica la creazione di una copia locale della sua intera storia, inclusi tutti i rami, i commit e le revisioni. Il file ZIP fornito da Github non è un repository git, ma piuttosto un'istantanea dell'ultima revisione del repository sul ramo primario. Quest'ultimo sarà ovviamente sempre più piccolo.
Radon Rosborough,

Risposte:


15

Penso che la parola connectivitynon abbia nulla a che fare con la connettività di rete qui. Il messaggio viene visualizzato dopo che tutti i dati sono già stati ricevuti dal server git.

Si possono trovare alcuni indizi nelle fonti git. C'è il seguente commento nel file connected.c :

/*
 * If we feed all the commits we want to verify to this command
 *
 *  $ git rev-list --objects --stdin --not --all
 *
 * and if it does not error out, that means everything reachable from
 * these commits locally exists and is connected to our existing refs.
 * Note that this does _not_ validate the individual objects.
 *
 * Returns 0 if everything is connected, non-zero otherwise.
 */

È correlato alla funzione check_everything_connected_realchiamata dopo la visualizzazione delChecking connectivity... messaggio .

Quindi, in pratica, significa che git sta verificando se tutti gli oggetti sono stati ricevuti correttamente (sono collegati a riferimenti esistenti).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.