Git clone “memeriksa konektivitas” - apa itu?

11

Saat melakukan git clonerepo melalui SSH atau HTTP, Anda mendapatkan output yang terlihat seperti ini:

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.

Saya tertarik dengan langkah "Memeriksa konektivitas" yang terakhir. Itu terjadi setelah repo dan semua metadata-nya telah diunduh, yaitu setelah semua konektivitas internet selesai.

Apa sebenarnya yang harus dilakukan oleh langkah proses ini?

Mikey TK
sumber
1
Pernahkah Anda memperhatikan Checking out files: 100% (2897/2897), done.setelahnya Checking connectivity? Tampaknya Receiving objectsbukan berarti menerima konten. Sebagai contoh, ketika saya kloning git, aku baris ini output: Receiving objects: 100% (199562/199562), 84.06 MiB | 3.90 MiB/s, done.. Namun, ketika saya mengunduh zip dari GitHub, direktori yang didekompresi hanya 28 MiB. Saya tidak yakin apa artinya ini, tetapi mungkin ringkasan dari semua komitmen di masa lalu atau sesuatu seperti itu.
ecube
1
@ecube: Mengkloning repositori git merupakan pembuatan salinan lokal dari seluruh sejarahnya, termasuk setiap cabang, komit, dan revisi. File ZIP yang disediakan oleh Github bukan repositori git, melainkan snapshot dari revisi terbaru repositori pada cabang utama. Yang terakhir tentu saja akan selalu lebih kecil.
Radon Rosborough

Jawaban:

15

Saya pikir kata connectivityitu tidak ada hubungannya dengan konektivitas jaringan di sini. Pesan ditampilkan setelah semua data sudah diterima dari server git.

Seseorang dapat menemukan beberapa petunjuk di sumber git. Ada komentar berikut dalam file terhubung.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.
 */

Ini terkait dengan fungsi check_everything_connected_realyang dipanggil setelah Checking connectivity...pesan ditampilkan .

Jadi pada dasarnya berarti git memeriksa apakah semua objek diterima dengan benar (terhubung ke referensi yang ada).

ge0rdi
sumber