Clone do Git "verificando a conectividade" - o que é?


11

Ao fazer um git clonerepo sobre SSH ou HTTP, você obtém uma saída parecida com esta:

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.

Estou interessado na última etapa "Verificando a conectividade". Isso acontece após o repositório e todos os seus metadados foram baixados, ou seja, bem após a conclusão de qualquer conexão à Internet.

O que exatamente esta etapa do processo está realizando?


1
Você notou o Checking out files: 100% (2897/2897), done.depois Checking connectivity? Parece que Receiving objectsisso realmente não significa receber o conteúdo. Por exemplo, quando eu clonado git, eu tenho essa linha de saída: Receiving objects: 100% (199562/199562), 84.06 MiB | 3.90 MiB/s, done.. No entanto, quando eu baixei um zip do GitHub, o diretório descompactado tinha apenas 28 MiB. Não sei ao certo o que isso significa, mas pode ser o resumo de todos os commits anteriores ou algo assim.
Ecube 18/03/16

1
@ecube: a clonagem de um repositório git consiste em fazer uma cópia local de todo o seu histórico, incluindo todas as ramificações, confirmação e revisão. O arquivo ZIP fornecido pelo Github não é um repositório git, mas um instantâneo da revisão mais recente do repositório na ramificação principal. O último, é claro, sempre será menor.
Radon Rosborough 6/09/16

Respostas:


15

Acho que a palavra connectivitynão tem nada a ver com conectividade de rede aqui. A mensagem é exibida depois que todos os dados já foram recebidos do servidor git.

Pode-se encontrar algumas pistas nas fontes git. Há o seguinte comentário no arquivo 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 à função check_everything_connected_realque é chamada depois que a Checking connectivity...mensagem é exibida .

Portanto, basicamente significa que o git está verificando se todos os objetos foram recebidos corretamente (estão conectados às referências existentes).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.