Czy istnieje sposób, aby sprawdzić, jak duże jest repozytorium Git w GitHub, zanim zdecydujesz się go sklonować?
To wydaje się być naprawdę oczywistą / podstawową statystyką, ale w ogóle nie mogę znaleźć, jak to zobaczyć na GitHub.
Czy istnieje sposób, aby sprawdzić, jak duże jest repozytorium Git w GitHub, zanim zdecydujesz się go sklonować?
To wydaje się być naprawdę oczywistą / podstawową statystyką, ale w ogóle nie mogę znaleźć, jak to zobaczyć na GitHub.
Odpowiedzi:
Istnieje sposób na uzyskanie dostępu do tych informacji za pośrednictwem interfejsu API GitHub .
GET /repos/:user/:repo
Podczas pobierania informacji o repozytorium właściwość o nazwie size
jest wyceniana na podstawie wielkości całego repozytorium (w tym całej jego historii), w kilobajtach.
Na przykład repozytorium Git waży około 124 MB. size
Własnością zwróconego JSON ładunek jest ceniony na 124283
.
Rozmiar jest rzeczywiście wyrażony w kilobajtach na podstawie użycia dysku przez nagie repozytorium po stronie serwera. Aby jednak nie marnować zbyt wiele miejsca na repozytoria z dużą siecią, GitHub polega na Git Alternates . W tej konfiguracji obliczenie użycia dysku w oparciu o samo repozytorium nie uwzględnia magazynu obiektów współużytkowanych, a zatem zwraca „niekompletną” wartość poprzez wywołanie API.
Ta informacja została podana przez obsługę GitHub.
$ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}
. Zobacz developer.github.com/v3/#authentication
Jeśli jesteś właścicielem 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 jesteś właścicielem repozytorium, możesz je rozwidlić, a następnie sprawdzić w tym samym miejscu.
Nieco hacky: skorzystaj z download as a zip file
opcji, przeczytaj 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 wybraną gałąź bez historii.
Settings > Repositories
, ale zamiast tego znalazłem rozmiar repozytorium na Account Settings > Repositories
stronie głównej git. Oczywiście działa to tylko z repozytoriami, które posiadasz (lub widelcem).
Jeśli używasz przeglądarki Google Chrome, możesz zainstalować rozszerzenie rozmiaru repozytorium GitHub .
Repo tutaj: https://github.com/harshjv/github-repo-size
@larowlan świetny przykładowy kod. Dzięki nowemu interfejsowi API GitHub V3 instrukcja curl musi zostać zaktualizowana. Ponadto logowanie nie jest już wymagane:
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), co jest prawie GB.
Aby to zrobić za pomocą 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
Zamień YOURGITHUBUSERNAME na swoją nazwę użytkownika GitHub (patrz rysunek).
Zamień WŁAŚCICIELA na nazwę użytkownika Git właściciela repozytorium. Zamień REPOSITORY na nazwę repozytorium.
Lub jako ładny skrypt Bash (wklej to 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żywaj go w ten sposób:
gitrepo-info larowlan pisi reel
To da mi informacje o repozytorium pisi / reel na GitHub.
Musisz postępować zgodnie z interfejsem API GitHub. Zobacz dokumentację tutaj, aby uzyskać wszystkie szczegóły dotyczące Twojego repozytorium. Wymaga wykonania żądania GET, ponieważ:
GET / repos /: owner /: repository
Musisz wymienić dwie rzeczy:
Na przykład moja nazwa użytkownika maheshmnj i jestem właścicielem repozytorium flutter-ui-nice , więc mój adres GET będzie następujący:
https://api.github.com/repos/maheshmnj/flutter-ui-nice
Po wysłaniu żądania GET zostaniesz zalany niektórymi danymi JSON i prawdopodobnie w linii nr 78 powinieneś zobaczyć klucz o nazwie rozmiar , który zwróci rozmiar repozytorium.
Wskazówka: podczas pracy z JSON sugeruję dodanie wtyczki, która formatuje dane JSON, aby ułatwić czytanie JSON. Zainstaluj wtyczkę .
size
klucza w odpowiedzi, a nie linii 78. Nie wspominając, różne formaterowie będą mieli różne podziały linii w różnych miejscach, pozostawiając pożądane dane pod innym numerem linii.
probably
zobaczyć go w linii nr 78, więc oznacza to, że powinieneś zobaczyć klucz wielkości około 78 , po drugie, jeśli rozmiar z github apis nie był dokładny, nie sądzę, że znajdziesz coś dokładniejszego niż github apis.
Podsumowując rozwiązania chakoshy @larowlan, @VMTrooper i @vahid:
#!/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
W przypadku prywatnego repozytorium konieczne będzie uzyskanie tokena dostępu osobistego na stronie https://github.com/settings/tokens .
Następnie użyj następującego polecenia curl, aby uzyskać szczegółowe informacje (podstawiając wartości dla [token], [właściciel] i [nazwa]):
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.