Git克隆“检查连接性”-这是什么?


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.

我对最后的“检查连接性”步骤很感兴趣。它发生回购和所有元数据都已下载之后,即在任何Internet连接完成之后。

该过程的这一步骤究竟完成了什么?


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.。但是,当我从GitHub下载zip时,解压缩的目录只有28 MiB。我不确定这是什么意思,但这可能是所有过去提交的摘要或类似内容。
ecube

1
@ecube:克隆git存储库即构成其整个历史记录的本地副本,包括每个分支,提交和修订。Github提供的ZIP文件不是git存储库,而是主要分支上存储库最新版本的快照。后者当然总是较小的。
Radon Rosborough

Answers:


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正在检查是否正确接收了所有对象(已连接到现有引用)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.