웹 어딘가에 공용 git 저장소가 있다고 가정합니다. 나는 그것을 복제하고 싶지만 먼저 그것의 크기가 무엇인지 확인해야한다. (얼마나 많은 물체 & 킬로바이트가 git count-objects
에있는 것)git 저장소의 객체와 크기를 원격으로 계산할 수 있습니까?
거기에 할 수있는 방법이 있습니까?
웹 어딘가에 공용 git 저장소가 있다고 가정합니다. 나는 그것을 복제하고 싶지만 먼저 그것의 크기가 무엇인지 확인해야한다. (얼마나 많은 물체 & 킬로바이트가 git count-objects
에있는 것)git 저장소의 객체와 크기를 원격으로 계산할 수 있습니까?
거기에 할 수있는 방법이 있습니까?
다음과 같은 것 사용할 수있는 하나의 작은 kludge :이 라인을 따라
mkdir repo-name
cd repo-name
git init
git remote add origin <URL of remote>
git fetch origin
git fetch
표시 피드백 : 일반적으로 꽤 빨리 일어날 원격 끝에
remote: Counting objects: 95815, done.
remote: Compressing objects: 100% (25006/25006), done.
remote: Total 95815 (delta 69568), reused 95445 (delta 69317)
Receiving objects: 100% (95815/95815), 18.48 MiB | 16.84 MiB/s, done.
...
단계; 그것은 시간 소모적 인 수령 단계입니다. 실제로 총 크기를 표시하지는 않지만 잠시 볼 수 있습니다. "1 % ... 23.75 GiB"가 표시되면 문제가 있음을 알게되고 취소 할 수 있습니다.
내가 알고하지 않는 것이 : 요청을 듣고 기본적으로 아무것도,
힘내는 서버가 아닌
그리고 명령과 함께 "git remote ...
"거래 (당신은 gitweb, 또는 gitolite 층을 활성화하지 않은 경우) 로컬 원격 저장소를 복사 (가져옴)합니다.
그래서 뭔가를 가져 오지 않으면 원격 저장소 인 clone --bare
크기를 알 수 없습니다.
그리고 일단 체크 아웃하면 작업 디렉토리의 크기는 포함되지 않습니다.
는이 질문에 몇 가지 문제가 있다고 생각합니다 : git count-objects
이 진정으로 (심지어 git count-object -v
정말 않습니다) 저장소의 크기를 나타내지 않는이; 멍청한 http 전송 이외의 것을 사용하고 있다면, 복제본을 만들 때 새 팩이 생성됩니다. 리모컨을 분석하기 위해 수행하는 작업 (VonC에서 을 가리킴)은 작업 복사본 크기 인 을 고려하지 않습니다. 그들이 바보 HTTP 전송을 (github에, 예를 들어, 가 아닌)를 사용하는 경우
말했다되는 것을, 모든 개체와 팩의 크기를 쿼리 컬 사용되는 쉘 스크립트를 작성할 수 있습니다. 그게 더 가까워 질지 모르지만 더 많은 http 요청을하면 실제로 복제를 수행하기 위해 다시 만들어야합니다.
이 git-fetch
의 (a 스마트 HTTP 전송에) 회선을 통해 전송 것이 무엇인지 파악하고 그 결과를 분석하는 것을 보낼 수있다,하지만 정말 할 수있는 좋은 것은 아니다. 기본적으로 대상 서버에 개의 결과를 다운로드하여 버리도록 요청하면 다운로드하여 다시 버릴 수 있으므로 을 다시 다운로드하여 저장할 수 있습니다. 다음 단계 같은
뭔가이 효과를 사용할 수 있습니다 :이 모든 것의 끝에
url=https://github.com/gitster/git.git
git ls-remote $url |
grep '[[:space:]]\(HEAD\|refs/heads/master\|refs/tags\)' |
grep -v '\^{}$' | awk '{print "0032want " $1}' > binarydata
echo 00000009done >> binarydata
curl -s -X POST --data-binary @binarydata \
-H "Content-Type: application/x-git-upload-pack-request" \
-H "Accept-Encoding: deflate, gzip" \
-H "Accept: application/x-git-upload-pack-result" \
-A "git/1.7.9" $url/git-upload-pack | wc -c
는 원격 서버는 마스터/HEAD를 포장하고 당신을 위해 모든 태그와 당신은 것이다 것 전체 팩 파일을 에 다운로드 했으므로 복제 중에 다운로드 할 때 얼마나 큰지보십시오.
최종적으로 복제본을 만들면 작업 복사본도 생성되므로 전체 디렉토리가 이러한 명령보다 더 커지지 만 팩 파일 은 일반적으로 작업 사본의 가장 큰 부분입니다. 중요한 역사.
github 저장소의 경우 파일 크기를 확인하는 API를 제공합니다. 그것은 작동합니다!
이 링크 : see-the-size-of-a-github-repo-before-cloning-it 대답했다
명령 : (@VMTrooper에서 답)
curl https://api.github.com/repos/$2/$3 | grep size
예 :
curl https://api.github.com/repos/Marijnh/CodeMirror | grep size
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5005 100 5005 0 0 2656 0 0:00:01 0:00:01 --:--:-- 2779
"size": 28589,
을 당신은 GitHub의 크기를 찾아 자신의 API에 저장소 감사를 호스팅 할 수 @Dogbert (이 [SO 질문] (HTTP를 참조하십시오. com/questions/8646517/see-a-github-repo-before-cloning-it)를 참조하십시오. 하지만 개체 수와 관련된 아무 것도 발견하지 못했습니다. Hth. – nulltoken