Git clone «проверка подключения» - что это?


11

При выполнении git cloneрепо через SSH или HTTP вы получаете вывод, который выглядит примерно так:

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.

Я заинтересован в этом последнем шаге «Проверка подключения». Это происходит после того, как репо и все его метаданные были загружены, т. Е. После того, как закончилось любое подключение к Интернету.

Что именно делает этот шаг процесса?


1
Вы заметили Checking out files: 100% (2897/2897), done.после Checking connectivity? Кажется, Receiving objectsэто не означает получение контента. Например, когда я клонировать git, я получил эту линию продукции: Receiving objects: 100% (199562/199562), 84.06 MiB | 3.90 MiB/s, done.. Однако, когда я скачал zip-архив с GitHub, распакованный каталог был только 28 МБ. Я не уверен, что это значит, но это может быть сводка всех прошлых коммитов или что-то в этом роде.
Ecube

1
@ecube: клонирование репозитория git означает создание локальной копии всей его истории, включая каждую ветвь, коммит и ревизию. ZIP-файл, предоставленный Github, является не репозиторием git, а снимком последней ревизии репозитория в основной ветке. Последнее, конечно, всегда будет меньше.
Радон Росборо

Ответы:


15

Я думаю, что слово не connectivityимеет ничего общего с сетевым подключением здесь. Сообщение отображается после того, как все данные были получены с сервера git.

Можно найти некоторые подсказки в источниках git. В файле 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.
 */

Это связано с функцией, check_everything_connected_realкоторая вызывается после отображенияChecking connectivity... сообщения .

Таким образом, это в основном означает, что git проверяет, все ли объекты были получены правильно (связаны с существующими ссылками).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.