Jak Mogę zobaczyć rozmiar repozytorium GitHub przed jego klonowaniem?

Czy istnieje sposób, aby zobaczyć, jak duże jest repozytorium Gita na Githubie, zanim zdecydujesz się je sklonować?

To wydaje się bardzo oczywiste / podstawowe statystyki, ale nie mogę znaleźć, jak to zobaczyć na Githubie w ogóle.

Author: Gonçalo Peres 龚燿禄, 2011-12-27

12 answers

Istnieje sposób, aby uzyskać dostęp do tych informacji poprzez GitHub API .

Podczas pobierania informacji o repozytorium właściwość o nazwie size jest wyceniana z wielkością całego repozytorium (w tym całej jego historii) w kilobajtach.

Na przykład, repozytorium Git waży około 124 MB. Właściwość size zwracanego ładunku JSON jest wyceniana na 124283.

Update

Rozmiar jest rzeczywiście wyrażony w kilobajtach na podstawie użycia dysku przez repozytorium po stronie serwera. Jednak, aby uniknąć marnowania zbyt dużo miejsca na repozytoriach z dużą siecią, GitHub opiera się na Git Alternates. W tej konfiguracji obliczanie użycia dysku w stosunku do repozytorium nie uwzględnia współdzielonego magazynu obiektów, a tym samym zwraca "niekompletną" wartość poprzez wywołanie API.

Ta informacja został wydany przez GitHub support.

 310
Author: nulltoken,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-13 03:39:46

Jeśli posiadasz repozytorium, możesz znaleźć dokładny rozmiar, otwierając ustawienia konta repozytoria (https://github.com/settings/repositories ), a rozmiar repozytorium jest wyświetlany obok jego oznaczenia.

Jeśli nie posiadasz repozytorium, możesz je rozwidlić, a następnie sprawdzić w tym samym miejscu.

Uwaga: możesz być właścicielem organizacji, która hostuje wiele repozytoriów, a mimo to nie ma roli w konkretnym repozytorium wewnątrz organizacji. Domyślnie, nawet jeśli tworzysz repozytorium w organizacji, którą posiadasz, nie jesteś dodawany do repo i nie widzisz tego repo w settings/repositories. Więc dodaj siebie w ustawieniu repozytorium (https://github.com/org-name/repo-name/settings), aby zobaczyć go w https://github.com/settings/repositories

nieco hakerskie: użyj opcji download as a zip file, odczytaj wskazany Rozmiar Pliku, a następnie anuluj go.

Nie pamiętam, czy pobieranie jako zip kiedykolwiek działało, ale w każdym razie, robi to teraz tylko pobiera aktualnie wybrana gałąź bez historii.

 137
Author: CoatedMoose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-23 10:06:03

Jeśli używasz przeglądarki Google Chrome, możesz zainstalować rozszerzenie Rozmiar repozytorium GitHub .

Tutaj wpisz opis obrazka

Repo tutaj: https://github.com/harshjv/github-repo-size

 87
Author: Bigwave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-06 21:14:56

@ Larowlan świetny przykładowy kod. W Nowym GitHub API V3 Instrukcja curl musi zostać zaktualizowana. Ponadto Login nie jest już wymagany:

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

Na przykład:

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

Zwraca 931668 (W KB), czyli prawie GB.

 24
Author: trevorrobertsjr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-07 19:48:49

Aby to zrobić z curl (sudo apt-get curl) i JSON pretty (sudo Gem install jsonpretty json):

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

Zastąp swoją nazwę Użytkownika na Githubie (go figure).

Zastąp właściciela nazwą użytkownika Git właściciela repozytorium. Zastąp repozytorium nazwą repozytorium.

Lub jako ładny skrypt Basha (wklej go do pliku o nazwie 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

Użyj go tak:

gitrepo-info larowlan pisi reel

To da mi informacje na temat repozytorium pisi / reel na Githubie.

 10
Author: larowlan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-25 23:37:01

Musisz postępować zgodnie z GitHub API. Szczegóły dotyczące repozytorium można znaleźć w dokumentacji tutaj. Wymaga złożenia żądania GET jako:

GET / repos/: owner/: repository

Musisz wymienić dwie rzeczy:

  1. :owner - nazwa użytkownika osoby, która jest właścicielem repozytorium
  2. : repozytorium - Nazwa repozytorium

Np. moja nazwa użytkownika maheshmnj i posiadam repozytorium, flutter-ui-nice , więc mój GET URL będzie:

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

Przy wysyłaniu żądania GET zostaniesz zalany danymi JSON i prawdopodobnie w linii 78 powinieneś zobaczyć klucz o nazwie size , który zwróci rozmiar repozytorium.

Wskazówka: podczas pracy z JSON proponuję dodać wtyczkę, która formatuje dane JSON, aby ułatwić czytanie JSON. Zainstaluj wtyczkę .

 3
Author: maheshmnj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-25 23:47:40

W przypadku prywatnego repozytorium, musisz uzyskać osobisty Token dostępu z https://github.com/settings/tokens .

Następnie użyj następującego polecenia curl, aby uzyskać szczegóły (zastępując wartości dla [token], [owner] I [name]):

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

Jak wspomniano wcześniej, rozmiar może być w MB lub KB.

 2
Author: Mike Godin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-03 16:03:57

Podsumowując rozwiązania @larowlan, @ VMTrooper i @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
 1
Author: golem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-27 23:20:15

Z JavaScript, ponieważ API Github jest włączone CORS:

fetch('https://api.github.com/repos/webdev23/source_control_sentry')
  .then(v => v.json()).then((function(v){
   console.log(v['size'] + "KB")
  })
)
 1
Author: NVRM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-05 15:38:44

Możesz to zrobić używając Github API

Oto przykład Pythona:

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)
 0
Author: Alon Barad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-11 16:00:37

Można to osiągnąć używając konsoli przeglądarki i uruchamiając

fetch('https://api.github.com/repos/[USERNAME]/[REPO]')
  .then(v => v.json()).then((function(v){
   console.log(v['size'] + "KB")
  })
)
Rozważmy praktyczny przykład.

Zakładając, że ktoś chce znaleźć Rozmiar tego repo używając Firefoksa.

Otwórz konsolę za pomocą Ctrl+Shift+K.

Następnie wklej następujący kod

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

Naciśnij enter, a jeden otrzyma rozmiar repo, jak widać na obrazku poniżej.

Tutaj wpisz opis obrazka

 0
Author: Gonçalo Peres 龚燿禄,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-08 13:42:38

Jeśli próbujesz dowiedzieć się o wielkości własnych repozytoriów.

Wszystko, co musisz zrobić, to przejść do repozytoriów ustawień GitHub i zobaczyć wszystkie rozmiary tam w przeglądarce nie wymaga dodatkowej pracy.

Https://github.com/settings/repositories

 0
Author: Nathan Weiler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-13 00:17:12