Git clone "comprobación de conectividad": ¿qué es?

11

Al hacer un git clonerepositorio sobre SSH o HTTP, obtienes una salida que se parece a esto:

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.

Estoy interesado en el último paso "Verificar la conectividad". Ocurre después de que el repositorio y todos sus metadatos se hayan descargado, es decir, mucho después de que haya finalizado cualquier conexión a Internet.

¿Qué está logrando exactamente este paso del proceso?

Mikey TK
fuente
1
¿Has notado el Checking out files: 100% (2897/2897), done.después Checking connectivity? Parece que en Receiving objectsrealidad no significa recibir el contenido. Por ejemplo, cuando cloné git, tengo esta línea de salida: Receiving objects: 100% (199562/199562), 84.06 MiB | 3.90 MiB/s, done.. Sin embargo, cuando descargué un archivo zip de GitHub, el directorio descomprimido tenía solo 28 MiB. No estoy seguro de lo que esto significa, pero podría ser el resumen de todas las confirmaciones pasadas o algo así.
ecube
1
@ecube: la clonación de un repositorio git constituye hacer una copia local de todo su historial, incluidas todas las ramas, confirmaciones y revisiones. El archivo ZIP proporcionado por Github no es un repositorio de git, sino más bien una instantánea de la última revisión del repositorio en la rama primaria. Este último, por supuesto, siempre será más pequeño.
Radon Rosborough

Respuestas:

15

Creo que la palabra connectivityno tiene nada que ver con la conectividad de red aquí. El mensaje se muestra después de que todos los datos ya se recibieron del servidor git.

Uno puede encontrar algunas pistas en las fuentes de git. Hay el siguiente comentario en el archivo conectado.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.
 */

Está relacionado con la función check_everything_connected_realque se llama después de Checking connectivity...que se muestra el mensaje .

Por lo tanto, básicamente significa que git está verificando si todos los objetos se recibieron correctamente (están conectados a referencias existentes).

ge0rdi
fuente