programing

GitHub 저장소를 복제하기 전에 크기를 확인하려면 어떻게 해야 합니까?

starjava 2023. 5. 12. 20:10
반응형

GitHub 저장소를 복제하기 전에 크기를 확인하려면 어떻게 해야 합니까?

GitHub에서 Git 저장소를 복제하기 전에 Git 저장소의 크기를 확인할 수 있는 방법이 있습니까?

이것은 정말 명백한/기본적인 통계처럼 보이지만, 나는 GitHub에서 그것을 보는 방법을 전혀 찾을 수 없습니다.

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

  • 구문:GET /repos/:user/:repo
  • 예: https://api.github.com/repos/git/git

할 때 리포토대한정검라는 이름의 됩니다.size값은 전체 리포지토리의 크기(모든 기록 포함)(KB)로 계산됩니다.

를 들어 는 약 MB입니다.size은 반환JSON 페드다평다니로 평가됩니다.124283.

갱신하다

크기는 실제로 서버측 베어 저장소의 디스크 사용량을 기준으로 킬로바이트로 표시됩니다.그러나 대규모 네트워크가 있는 저장소에서 너무 많은 공간을 낭비하지 않기 위해 GitHub은 GitAlternates에 의존합니다.이 구성에서 맨 저장소에 대해 디스크 사용량을 계산하면 공유 개체 저장소가 계산되지 않으므로 API 호출을 통해 "불완전한" 값이 반환됩니다.

이 정보는 GitHub 지원팀에서 제공한 것입니다.

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

리포지토리를 소유하지 않은 경우에는 포크를 사용하여 같은 위치에서 리포지토리를 확인할 수 있습니다.

참고: 여러 리포지토리를 호스팅하는 조직의 소유자이지만 조직 내의 특정 리포지토리에 대한 역할이 없을 수 있습니다.기본적으로 소유한 조직에 리포지토리를 만들더라도 리포지토리에 추가되지 않으므로 해당 리포지토리가 표시되지 않습니다.settings/repositories 저장소 설정 장추가합다자을신설서정에소▁the▁yourself따▁so▁in다▁repos▁settingitory▁add(니)에 자신을 추가합니다.https://github.com/org-name/repo-name/settings)에서 확인할 수 있습니다.https://github.com/settings/repositories

다소 진부함: 사용 download as a zip file표시된 파일 크기를 읽은 다음 취소합니다.

zip으로 다운로드하는 것이 효과가 있었는지는 기억나지 않지만, 어떤 경우든, 그렇게 하면 현재 선택된 지점만 기록 없이 다운로드됩니다.

Google Chrome 브라우저를 사용하는 경우 GitHub Repository Size 확장을 설치할 수 있습니다.

여기에 이미지 설명 입력

여기에 보고: https://github.com/harshjv/github-repo-size

@lowlan 훌륭한 샘플 코드.새로운 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 (KB)는 GB입니다.

개인 보고서에는 인증이 필요합니다.한 가지 방법은 GitHub Personal Access 토큰을 사용하는 것입니다.

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

Github API가 CORS를 사용하도록 설정되어 있으므로 JavaScript를 사용하는 브라우저에서 다음 작업을 수행합니다.

fetch('https://api.github.com/repos/webdev23/source_control_sentry')
  .then(v => v.json()).then((v) => {
     console.log(v['size'] + 'KB')
  }
)

자신의 리포지토리 크기를 확인하려는 경우.

GitHub 설정 저장소로 이동하기만 하면 브라우저에 모든 크기가 표시되므로 추가 작업이 필요하지 않습니다.

https://github.com/settings/repositories

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

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

GITHUBUSERNAME을 GitHub 사용자 이름으로 바꿉니다(그림 참조).

OWNER를 리포지토리 소유자의 Git 사용자 이름으로 바꿉니다.리포지토리를 리포지토리 이름으로 바꿉니다.

또는 멋진 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/reel 저장소에 대한 정보를 얻을 수 있습니다.

다른 답변에서 볼 수 있듯이 다음을 통해 크기를 얻을 수 있습니다.api.github.com그것은 에 있습니다.sizeJSON 개체의 속성이 반환되었습니다.

그것을, 에 서브도메인을 .api복구 경로를 확장합니다./repos:

# For public repos ->
#     Repo example: Axios
#     Repo URL: https://github.com/axios/axios
        
             ⤵              ⤵
curl https://api.github.com/repos/axios/axios

# For private repos ->
#   Repo example: My-repo
#   Repo URL: https://github.com/my-org/my-repo

curl https://{username}:{api-token}@api.github.com/repos/{orgname}/{reponame}

이것은 단지 URL이기 때문에, 당신은 어떤 프로그래밍 언어를 사용하여 데이터를 가져올 수 있습니다.

응답은 다음과 같습니다.

// Much more props inside
{
  "id": 23088740,
  "name": "axios",
  "full_name": "axios/axios",
  "private": false,
  "size": 4396,
  "default_branch": "v1.x",
  "visibility": "public",
  "network_count": 9581,
  "subscribers_count": 1213
}

은 우에게가중것은한요입니다.size안에 있습니다Kb지금은, 하지만 미래에 (이미 그랬던 것처럼) 바뀔 수 있습니다.

하지만... 저는 여러 번 테스트를 해보았는데, repo의 실제 크기와 위의 메커니즘으로 표시된 크기가 너무 다르다는 것을 알게 되었습니다.

것으로 axiosrepo:

  • api..com 에 된 크기 -> api.github.com 에 표시된 ->4396Kb -> ~4.29

전체 레포를 복제하는 경우:

  • 로평을높입다니판으로 .clone repo.git
  • 명령을 .du -sh ./axios
  • 유보> ->8.0
  • 거한제를 합니다..git 폴더
  • 유보> ->2.6

않은, 지좋않은은size~4.29는 Mb가 .8또는2.6 Mb »

최신 커밋만 복제하는 경우:

  • 로평을높입다니판으로 .--depth 1 래그플, 래그▁like, ,플,.clone repo --depth 1
  • 명령을 .du -sh ./axios
  • 유보> ->3.2Mb(that's close)
  • 거한제를 합니다..git 폴더
  • same -> 일한동한2.6

않은, 지좋않은은size~4.29는 Mb가 .3.2또는2.6 Mb »

분기를 하나만 복제하는 경우:

  • 위의 JSON에는 다음과 같은 매개 변수가 있습니다.default_branch복제합시다
  • 로 평판을 높입니다.-b v1.x --single-branch깃발들
  • 명령으로 체중이 늘다du -sh ./axios
  • 보유 ->7.5Mb(that's close)
  • 제거한다..git내부의 폴더는 동일하게 제공합니다.2.6MB

여전히 좋지 않습니다.size~4.29Mb가 아닙니다.7.5또는2.6Mb 둘 다

그러므로,sizeparam은 최근 커밋에 가까운 무언가를 보여주지만, 그것은 repo의 강력한 크기가 아닙니다.

위에서 설명한 바와 같이 작동합니다.axiosrepo, 그러나 다른 repos를 사용하는 테스트는 동일한 결과를 보여줍니다.

그것은 제 경험에서 나온 것입니다.

GitHub API를 따라야 합니다.리포지토리에 대한 자세한 내용은 여기에 있는 설명서를 참조하십시오.다음과 같이 GET 요청을 해야 합니다.

GET /repos/:owner/:리포지토리

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

  1. :owner - 리포지토리를 소유한 사용자의 사용자 이름
  2. :repository - 리포지토리의 이름

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

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

GET 요청을 할 때 일부 JSON 데이터가 쇄도할 것이며 78번 라인에서 저장소 크기를 반환하는 키 이름의 크기가 표시될 것입니다.

팁: JSON으로 작업할 때 JSON 데이터를 쉽게 읽을 수 있도록 포맷하는 플러그인을 추가하는 것이 좋습니다.플러그인을 설치합니다.

Github API를 사용하여 수행할 수 있습니다.

다음은 Python의 예입니다.

import requests


if __name__ == '__main__':
    base_api_url = 'https://api.github.com/repos'
    git_repository_url = 'https://github.com/garysieling/wikipedia-categorization.git'

    github_username, repository_name = git_repository_url[:-4].split('/')[-2:]  # garysieling and wikipedia-categorization
    res = requests.get(f'{base_api_url}/{github_username}/{repository_name}')
    repository_size = res.json().get('size')
    print(repository_size)

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

#!/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

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

그런 다음 다음 curl 명령을 사용하여 세부 정보를 가져옵니다([token], [owner] 및 [name]의 값으로 대체).

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

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

공식 GitHub CLI를 설치한 경우 다음을 수행할 수 있습니다.

gh api repos/<org>/<repo> --jq '.size'

크기를 KB 단위로 보고하는 것 같습니다.

를 위해 NVRM의 응답 방법을 사용하여 북마크릿 스크립트를 만들었습니다.

사용하려면 새 책갈피를 작성하고 이름을 지정한 후 이 스크립트를 URL 필드에 붙여넣습니다.레포를 검색하는 동안 이 북마크를 클릭하면 해당 레포 크기가 메가바이트와 킬로바이트로 표시되는 경고가 나타납니다.

javascript:(()=>{let url=new URL(document.location.href);if(url.origin!="https://github.com"){return}if(url.pathname=="/"){return}let p=url.pathname.slice(1,url.pathname.length);let parts=p.split('/');if(parts.length<2){return}let x=[parts[0],parts[1]].join('/');fetch(`https://api.github.com/repos/${x}`).then(r=>r.json()).then((b)=>alert(`${(b['size']/1000).toFixed(2)}mb (${b['size']}kb)`))})()

언급URL : https://stackoverflow.com/questions/8646517/how-can-i-see-the-size-of-a-github-repository-before-cloning-it

반응형