C'è un modo per vedere quanto è grande un repository Git su GitHub prima di decidere di clonarlo?
Sembra una statistica davvero ovvia / di base, ma non riesco a trovare il modo di vederlo su GitHub.
C'è un modo per vedere quanto è grande un repository Git su GitHub prima di decidere di clonarlo?
Sembra una statistica davvero ovvia / di base, ma non riesco a trovare il modo di vederlo su GitHub.
Risposte:
C'è un modo per accedere a queste informazioni tramite l' API GitHub .
GET /repos/:user/:repo
Quando si recuperano informazioni su un repository, una proprietà denominata size
viene valutata con le dimensioni dell'intero repository (inclusa tutta la sua cronologia), in kilobyte.
Ad esempio, il repository Git pesa circa 124 MB. La size
proprietà del payload JSON restituita è valutato a 124283
.
La dimensione è infatti espressa in kilobyte in base all'utilizzo del disco del repository bare sul lato server. Tuttavia, al fine di evitare di sprecare troppo spazio con i repository con una rete di grandi dimensioni, GitHub si affida a Git Alternates . In questa configurazione, il calcolo dell'utilizzo del disco rispetto al repository nudo non tiene conto dell'archivio oggetti condiviso e quindi restituisce un valore "incompleto" tramite la chiamata API.
Queste informazioni sono state fornite dal supporto GitHub.
$ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}
. Vedi developer.github.com/v3/#authentication
Se sei il proprietario del repository, puoi trovare la dimensione esatta aprendo le Impostazioni account → Archivi ( https://github.com/settings/repositories ) e la dimensione del repository viene visualizzata accanto alla sua designazione.
Se non si possiede il repository, è possibile forkarlo e quindi controllare nello stesso posto.
Un po 'confuso: usa l' download as a zip file
opzione, leggi la dimensione del file indicata e poi cancellala.
Non ricordo se il download come zip ha mai funzionato, ma in ogni caso, così facendo ora scarica solo il ramo attualmente selezionato senza cronologia.
Settings > Repositories
, ma invece ho trovato la dimensione del repository sotto Account Settings > Repositories
la tua home page di git. Ovviamente, questo funziona solo con i repository che possiedi (o fork).
Se si utilizza il browser Google Chrome, è possibile installare l' estensione Dimensione repository GitHub .
Ripetere qui: https://github.com/harshjv/github-repo-size
@larowlan ottimo codice di esempio. Con la nuova GitHub API V3, l'istruzione curl deve essere aggiornata. Inoltre, non è più necessario il login:
curl https://api.github.com/repos/$2/$3 2> /dev/null | grep size | tr -dc '[:digit:]'
Per esempio:
curl https://api.github.com/repos/dotnet/roslyn 2> /dev/null | grep size | tr -dc '[:digit:]'
ritorna 931668
(in KB), che è quasi un GB.
Per fare questo con curl (sudo apt-get curl) e json pretty (sudo gem install jsonpretty json):
curl -u "YOURGITHUBUSERNAME" http://github.com/api/v2/json/repos/show/OWNER/REPOSITORY |
jsonpretty
Sostituisci YOURGITHUBUSERNAME con il tuo nome utente GitHub (vai alla figura).
Sostituisci OWNER con il nome utente Git del proprietario del repository. Sostituisci REPOSITORY con il nome del repository.
O come un bel script Bash (incollalo in un file chiamato 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
Usalo così:
gitrepo-info larowlan pisi reel
Questo mi darà informazioni sul repository pisi / reel su GitHub.
Devi seguire l'API GitHub. Consulta la documentazione qui per tutti i dettagli relativi al tuo repository. Richiede di effettuare una richiesta GET come:
GET / repos /: proprietario /: repository
Devi sostituire due cose:
Ad esempio, il mio nome utente maheshmnj e possiedo un repository, flutter-ui-nice , quindi il mio URL GET sarà:
https://api.github.com/repos/maheshmnj/flutter-ui-nice
Al momento della richiesta GET, verrai inondato di alcuni dati JSON e probabilmente sulla riga numero 78 dovresti vedere una chiave chiamata size che restituirà la dimensione del repository.
Suggerimento: quando lavori con JSON ti suggerisco di aggiungere un plug-in che formatta i dati JSON per facilitare la lettura di JSON. Installa il plugin .
size
chiave nella risposta, non la riga 78. Per non parlare, diversi formattatori avranno diverse interruzioni di riga in luoghi diversi, lasciando i dati desiderati su un numero di riga diverso.
probably
vederlo sulla riga n. 78, quindi questo indica che dovresti vedere la chiave size da qualche parte intorno al 78 , seconda cosa se le dimensioni dell'apis github non erano accurate, non credo che troverai qualcosa di più accurato dell'apis github.
Per riassumere le soluzioni chakoshy di @larowlan, @VMTrooper e @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
Per un repository privato, dovrai ottenere un token di accesso personale da https://github.com/settings/tokens .
Quindi utilizzare il seguente comando curl per ottenere i dettagli (sostituendo i valori per [token], [owner] e [name]):
curl -u git:[token] https://api.github.com/repos/[owner]/[name] 2> /dev/null | grep size
Come accennato in precedenza, la dimensione può essere in MB o KB.