GitHub 리포지토리의 크기를 복제하기 전에 어떻게 확인할 수 있습니까?


330

복제하기 전에 Git 리포지토리가 GitHub에 얼마나 큰지 확인할 수있는 방법이 있습니까?

이것은 명백한 기본 통계처럼 보이지만 GitHub에서 통계를 보는 방법을 찾을 수 없습니다.



4
@ KennyTM 매우 비슷한 질문입니다. 그러나 이것은 git 프로토콜 만 사용하는 방법이 아닌 github에만 해당됩니다.
jhabbott

1
참고로, 저장소 크기를 GitHub의 저장소 요약 github.com/harshjv/github-repo-size에 자동으로 추가하는이 크롬 확장 프로그램을 확인하십시오 . 업데이트 :이 답변으로 추가
Harsh Vakharia

힌트는 다음과 같습니다. 절대 가장 큰 저장소에는 다양한 형식의 이미지 만 포함되어 있으며, 다양한 앱에서 사용하는 아이콘의 "작품"저장소입니다. 그러나 GitHub는 크기를 0으로보고합니다. 따라서 알려진 소스 파일의 크기 만 고려하고 알 수없는 파일 형식은 고려하지 않는다고 가정합니다.
Jerry Dodge

답변:


276

GitHub API 를 통해이 정보에 액세스 할 수있는 방법이 있습니다 .

저장소에 대한 정보를 검색 할 때 이름이 지정된 특성 size 이 은 전체 저장소 (모든 히스토리 포함)의 크기 (KB)로 평가됩니다.

예를 들어 Git 리포지토리의 무게는 약 124MB입니다. size반환 된 JSON 페이로드 의 속성 값은 124283입니다.

최신 정보

크기는 실제로 서버 측 베어 저장소의 디스크 사용량에 따라 킬로바이트로 표시됩니다. 그러나 네트워크가 큰 리포지토리로 공간을 너무 많이 낭비하지 않도록 GitHub는 Git Alternates에 의존합니다 . 이 구성에서 Bare 저장소에 대한 디스크 사용량 계산은 공유 오브젝트 저장소를 고려하지 않으므로 API 호출을 통해 "불완전한"값을 리턴합니다.

이 정보는 GitHub 지원에 의해 제공되었습니다.


12
크기가 MB가 아님-> 명확하지 않습니다. 쿼리되는 리포지토리에 따라 달라집니다 ... 작은 리포지토리는 바이트 단위로, 큰 크기는 메가 바이트 단위로 노출됩니다. GitHub 지원에서 문제를 열었습니다. 문제가 해결 되 자마자 답변을 업데이트하겠습니다.
nulltoken

6
비공개 repos에서는 작동하지 않는 것 같습니다. 뭔가 빠졌습니까? 감사!
nroose

14
@nroose 사용해보십시오 $ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}. 참조 developer.github.com/v3/#authentication
nulltoken

1
@nulltoken kB / MB 등에 관한 질문에 대한 응답이 있습니까?
nealmcb 2016 년

2
방금 레포를 포크하고 (2018 년 9 월 9 일) MB가 아닌 kB
Jacob Stamm

109

리포지토리를 소유 한 경우 계정 설정리포지토리 ( https://github.com/settings/repositories ) 를 열어 정확한 크기를 찾을 수 있으며 리포지토리 크기는 지정 옆에 표시됩니다.

저장소를 소유하지 않은 경우 저장소를 포크 한 다음 같은 위치에서 확인할 수 있습니다.

다소 해킹 : download as a zip file옵션을 사용하여 표시된 파일 크기를 읽은 다음 취소하십시오.

zip으로 다운로드해도 효과가 있었지만 기억이 나지 않습니다. 지금 은 기록이없는 현재 선택한 지점 만 다운로드합니다.


우편 압축을 고려해서는 안됩니까? 소스 코드와 텍스트 파일을 최대 60 %까지 압축 할 수 있다고 생각합니다.
ffledgling

다운로드를 완료하지 않고 zip 압축 비율을 확인하는 방법을 모릅니다. 물론 다운로드를 완료 한 다음 압축 비율을 확인할 수 있습니다. 그러나이 시점에서 저장소의 압축을 풀고 리포 크기를 직접 확인할 수도 있습니다. 실제로 얼마나 정확한지에 달려 있습니다. 그리고 repo를 다운로드하여 여유가 있다면 확인하십시오.
CoatedMoose 5

1
에서 찾을 수 Settings > Repositories없지만 대신 Account Settings > Repositoriesgit 홈페이지 에서 repo 크기를 찾았습니다 . 물론 이것은 당신이 소유 한 저장소 (또는 포크)에서만 작동합니다.
modulitos

조직의 계정 설정에 리포지토리 크기가 표시되지 않으므로 조직이 아닌 사용자로 리포지토리를 소유 한 경우에만 해당됩니까?
베넷 브라운

2
zip 파일의 크기는 실제 저장소 크기를 전혀 나타내지 않습니다 . 1) 기록이없는 지정된 개정판의 저장소 스냅 샷 만 포함합니다 .2) Git 저장소는 압축되지 않은 팩 파일로 저장됩니다. 중복 상품 저장
kynan

74

Chrome 브라우저를 사용하는 경우 GitHub 리포지토리 크기 확장을 설치할 수 있습니다 .

여기에 이미지 설명을 입력하십시오

여기에 레포 : https://github.com/harshjv/github-repo-size


4
파이어 폭스 포트?
Banee Ishaque K

2
그 동일하지 @BaneeIshaqueK하지만 당신에게 환매 특약 크기 검사를 보여주는가 여기
에드 Shamikh의 Shabbir

1
업데이트 이제 Github 토큰을 제공하는 한 개인 리포지토리에서도 완벽하게 작동합니다.
Siddhant Rimal

2
여전히 신뢰할 수는 없지만 올바른 크기를보고하지 않는 GitHub API를 사용합니다. 이미지 (코드 없음) 이외의 저장소가 있으며 API는 크기가 0으로보고하지만 가장 큰 저장소입니다. 이 확장은이 특정 리포지토리의 크기를 보여 주지도 않습니다 (아마도 0을 볼 수 있기 때문에).
Jerry Dodge

19

@ larowlan 훌륭한 샘플 코드. 새로운 GitHub API V3에서는 curl 문을 업데이트해야합니다. 또한 로그인이 더 이상 필요하지 않습니다.

curl https://api.github.com/repos/$2/$3 2> /dev/null | grep size | tr -dc '[:digit:]'

예를 들면 다음과 같습니다.

curl https://api.github.com/repos/dotnet/roslyn 2> /dev/null | grep size | tr -dc '[:digit:]'

931668거의 GB 인 (KB)를 반환합니다 .


5
비공개 repos에서는 작동하지 않는 것 같습니다. 내가 놓친 것이 있습니까? 감사!
nroose

1
몇 가지 설명을 통해 답변을 더 확장하여 사람들이 필요에 맞게 답변을 변경할 수 있기를 바랍니다.
Shimmy Weitzhandler

10

curl (sudo apt-get curl) 및 json pretty (sudo gem install jsonpretty json) 로이 작업을 수행하려면

curl -u "YOURGITHUBUSERNAME" http://github.com/api/v2/json/repos/show/OWNER/REPOSITORY |
  jsonpretty

YOURGITHUBUSERNAME을 GitHub 사용자 이름으로 바꾸십시오 (그림 참조).

OWNER를 저장소 소유자의 Git 사용자 이름으로 바꾸십시오. REPOSITORY를 저장소 이름으로 바꾸십시오.

또는 멋진 Bash 스크립트로 사용하십시오 (gitrepo-info 파일에 붙여 넣으십시오).

#!/bin/bash
if [ $# -ne 3 ]
then
  echo "Usage: gitrepo-info <username> <owner> <repo>"
  exit 65
fi
curl -u "$1" http://github.com/api/v2/json/repos/show/$2/$3|jsonpretty

다음과 같이 사용하십시오.

gitrepo-info larowlan pisi reel

이것은 pisi / 릴 에 대한 정보를 제공 할 것입니다 GitHub 저장소에 .


1

GitHub API를 따라야합니다. 리포지토리와 관련된 모든 세부 정보는 여기 설명서를 참조하십시오 . GET 을 만들어야합니다 과 같이 요청을해야합니다.

GET / repos / : 소유자 / : 저장소

다음 두 가지를 교체해야합니다.

  1. :소유자 저장소를 소유 한 사람의 사용자 이름
  2. : repository-저장소 이름

예를 들어, 사용자 이름 maheshmnj 이고 저장소 flutter-ui-nice를 소유하고 있으므로 GET URL은 다음과 같습니다.

https://api.github.com/repos/maheshmnj/flutter-ui-nice

GET 요청을하면 JSON 데이터가 넘쳐나고 78 번 줄에 size 라는 키가 표시 될 것입니다 저장소의 크기를 반환합니다.

팁 : JSON 작업시 JSON 데이터를 쉽게 읽을 수 있도록 JSON 데이터를 형식화하는 플러그인을 추가하는 것이 좋습니다. 플러그인을 설치하십시오 .


A) 많은 사람들이보고 한 것처럼이 크기는 정확하지 않고 신뢰할 수 없습니다. B) 그것이 그렇더라도 JSON, 행 번호 및 형식을 시각적으로 읽는 것에 대한 메모는 무의미합니다. JSON은 사람이 읽을 수있는 것이 아니라 컴퓨터가 읽는 것을위한 것입니다. size78 행이 아닌 응답 에서 키 를 읽는 것에 대해 언급해야합니다. 말할 것도없이, 다른 포맷터는 다른 위치에서 다른 줄 바꿈을하여 원하는 데이터를 다른 줄 번호에 남겨 둡니다.
Jerry Dodge

주의 깊게 나는`언급 한 대답을 읽어야 @JerryDodge 우선``당신은 키라는 이름의 크기를``볼 수`나는 당신이해야한다고 말했다 probably그건 당신이 어딘가에 78 크기의 키를 볼 수 표시, 그래서 호선 78에서 볼 , github apis의 크기가 정확하지 않은 경우 두 번째로, github apis보다 더 정확한 것을 찾을 수 없다고 생각합니다.
maheshmnj

이미지 저장소가 있습니다. 이미지는 이진 데이터입니다. 이 저장소에는 텍스트 파일이 전혀 없습니다. GitHub는 모든 곳에서 0 바이트를 소비한다고보고합니다. 심지어 웹 사이트 / 플러그인.
Jerry Dodge

0

@larowlan, @VMTrooper 및 @vahid chakoshy 솔루션을 요약하면 다음과 같습니다.

#!/usr/bin/env bash


if [ "$#" -eq 2 ]; then
    echo "$(echo "scale=2; $(curl https://api.github.com/repos/$1/$2 2>/dev/null \
    | grep size | head -1 | tr -dc '[:digit:]') / 1024" | bc)MB"
elif [ "$#" -eq 3 ] && [ "$1" == "-z" ]; then
    # For some reason Content-Length header is returned only on second try
    curl -I https://codeload.github.com/$2/$3/zip/master &>/dev/null  
    echo "$(echo "scale=2; $(curl -I https://codeload.github.com/$2/$3/zip/master \
    2>/dev/null | grep Content-Length | cut -d' ' -f2 | tr -d '\r') / 1024 / 1024" \
    | bc)MB"
else
    printf "Usage: $(basename $0) [-z] OWNER REPO\n\n"
    printf "Get github repository size or, optionally [-z], the size of the zipped\n"
    printf "master branch (`Download ZIP` link on repo page).\n"
    exit 1
fi

0

개인 저장소의 경우 https://github.com/settings/tokens 에서 개인 액세스 토큰을 얻어야합니다. .

그런 다음 다음 curl 명령을 사용하여 세부 사항을 가져 오십시오 ([토큰], [소유자] 및 [이름]의 값으로 대체).

curl -u git:[token] https://api.github.com/repos/[owner]/[name] 2> /dev/null | grep size

앞에서 언급했듯이 크기는 MB 또는 KB 일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.