힘내 클론 "연결 확인"-무엇입니까?


11

git cloneSSH 또는 HTTP를 통해 repo를 수행하면 다음과 같은 출력이 나타납니다.

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.

마지막 "연결 확인"단계에 관심이 있습니다. 그것은 발생 의 repo와 모든 메타 데이터가 다운로드 된, 즉 어떤 인터넷 연결이 완료된 후에도.

프로세스의이 단계가 정확히 무엇입니까?


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을 다운로드했을 때 압축 해제 된 디렉토리는 28MiB에 불과했습니다. 이것이 의미하는 바는 확실하지 않지만 과거의 모든 커밋 요약이나 그와 비슷한 것일 수 있습니다.
ecube

1
@ecube : git 저장소를 복제하면 모든 분기, 커밋 및 수정본을 포함하여 전체 히스토리의 로컬 사본을 작성하게됩니다. Github에서 제공하는 ZIP 파일은 git 리포지토리가 아니라 기본 브랜치에서 리포지토리의 최신 버전에 대한 스냅 샷입니다. 후자는 물론 항상 더 작습니다.
Radon Rosborough

답변:


15

나는이 단어 connectivity가 네트워크 연결과 아무 관련이 없다고 생각합니다 . 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.