Kiểm tra kết nối Git clone trên mạng - đó là gì?


11

Khi thực hiện git clonerepo qua SSH hoặc HTTP, bạn sẽ nhận được đầu ra trông giống như thế này:

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.

Tôi quan tâm đến bước "Kiểm tra kết nối" cuối cùng đó. Nó xảy ra sau khi repo và tất cả siêu dữ liệu của nó đã được tải xuống, tức là sau khi mọi kết nối internet đã kết thúc.

Chính xác thì bước này của quá trình hoàn thành là gì?


1
Bạn có nhận thấy Checking out files: 100% (2897/2897), done.sau Checking connectivity? Có vẻ như Receiving objectskhông thực sự có nghĩa là nhận nội dung. Ví dụ, khi tôi nhân bản git, tôi đã nhận được dòng đầu ra này : Receiving objects: 100% (199562/199562), 84.06 MiB | 3.90 MiB/s, done.. Tuy nhiên, khi tôi tải xuống một zip từ GitHub, thư mục giải nén chỉ có 28 MiB. Tôi không chắc điều này có nghĩa là gì, nhưng nó có thể là bản tóm tắt của tất cả các cam kết trong quá khứ hoặc đại loại như thế.
ecube 18/03/2016

1
@ecube: Nhân bản một kho lưu trữ git tạo thành một bản sao cục bộ của toàn bộ lịch sử của nó, bao gồm mọi chi nhánh, cam kết và sửa đổi. Tệp ZIP được cung cấp bởi Github không phải là kho lưu trữ git, mà là ảnh chụp nhanh bản sửa đổi mới nhất của kho lưu trữ trên nhánh chính. Cái sau tất nhiên sẽ luôn nhỏ hơn.
Radon Rosborough

Câu trả lời:


15

Tôi nghĩ từ connectivitynày không liên quan gì đến kết nối mạng ở đây. Thông báo được hiển thị sau khi tất cả dữ liệu đã được nhận từ máy chủ git.

Người ta có thể tìm thấy một số manh mối trong các nguồn git. Có bình luận sau trong connected.c file:

/*
 * 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.
 */

Nó liên quan đến chức năng check_everything_connected_realđược gọi sau khi Checking connectivity...tin nhắn được hiển thị .

Vì vậy, về cơ bản có nghĩa là git đang kiểm tra xem tất cả các đối tượng đã được nhận chính xác chưa (được kết nối với các ref hiện có).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.