Gitクローンの「接続の確認」-それは何ですか?


11

git cloneSSHまたは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.。しかし、GitHubからzipをダウンロードすると、解凍されたディレクトリは28 MiBしかありませんでした。これが何を意味するのかはわかりませんが、過去のすべてのコミットの要約かそのようなものかもしれません。
ecube 2016年

1
@ecube:gitリポジトリのクローンを作成すると、すべてのブランチ、コミット、リビジョンを含む、その履歴全体のローカルコピーが作成されます。Githubによって提供されるZIPファイルはgitリポジトリではなく、プライマリブランチ上のリポジトリの最新リビジョンのスナップショットです。もちろん、後者は常に小さくなります。
Radon Rosborough、2016

回答:


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がすべてのオブジェクトが正しく受信されたかどうか(既存の参照に接続されているかどうか)をチェックしていることを意味します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.