Desidero visualizzare la dimensione totale del repository di un progetto ospitato su GitHub senza doverlo clonare. A volte lo faccio:
-
Avvia la clonazione di alcuni repository GitHub
Ricezione di oggetti: 45% (218 / 476), 5,50 MiB | 27 KiB / s
Hai già esaurito 5 MB? Sospendi …
^Z
-
Clona il repository su un server con una normale connessione Internet solo per vedere la sua dimensione.
- Continuare (o interrompere) la clonazione locale.
Come faccio a scoprire in anticipo la dimensione del repository? Nella ricerca vedo la dimensione del repository, ma non in altri posti.
Commenti
- Controlla le risposte a questa domanda di overflow dello stack .
Risposta
Utilizzo dellAPI Github:
$ echo https://github.com/hlamer/enki.git | perl -ne "print $1 if m!([^/]+/[^/]+?)(?:\.git)?$!" | xargs -i curl -s -k https://api.github.com/repos/"{}" | grep size "size": 284,
Commenti
- Su Mac, ' no
-i
parametro perxargs
, quindi ' s:$ echo https://github.com/hlamer/enki.git | perl -ne 'print $1 if m!([^/]+/[^/]+?)(?:\.git)?$!' | xargs -I{} curl -s -k https://api.github.com/repos/'{}' | grep size
- e questa è la dimensione in … kilobyte?
Risposta
In Firefox puoi utilizzare il componente aggiuntivo GitHub Repository Size .
Commenti
- Perché il voto negativo? Lestensione o lo script utente non funzionano o contengono malware?
- No, tutto funziona perfettamente …
Risposta
Utilizza il browser Google Chrome e installa questa estensione
Aggiunge la dimensione del repository alla home page:
Risposta
curl \ -H "Accept: application/vnd.github.v3+json" \ -s https://api.github.com/repos/torvalds/linux | \ jq ".size" | \ numfmt --to=iec --from-unit=1024
Spiegazione:
- recupera le informazioni sul repository da github api utilizzando curl
Otteniamo una risposta json come questa:
{ "id": 2325298, "node_id": "MDEwOlJlcG9zaXRvcnkyMzI1Mjk4", "name": "linux", "full_name": "torvalds/linux", "private": false, ... "size": 3018913, <<<This is what we need "stargazers_count": 99224, "watchers_count": 99224, ... }
-
Invia la risposta json a parser jq e trova la coppia attributo-valore richiesta.
.
indica la radice del corpo json esize
è lattrazione richiesta ibute dal corpo della radice
Output (la dimensione in kB):
3018913
- Quindi reindirizza loutput a numfmt
$ man numfmt --to=[UNIT] iec 1K = 1024, 1M = 1048576, ... --from-unit=N specify the input unit size (instead of the default 1) (it basically tells that the input is in kB(1024B) insted of B
Risultato:
2.9G
Per i repository privati, passare un token come intestazione
-H "Authorization: token GITHUB_TOKEN"
sostituisci GITHUB_TOKEN con un token github che ha accesso a repository privati
https://command-not-found.com/jq
https://command-not-found.com/numfmt
Commenti
- Puoi spiegare cosa fa questo comando? Come aiuta in questa situazione? Grazie
- Recupera i metadati del repository utilizzando
curl
, quindi estrae " size " da esso utilizzandojq
, quindi converte i byte non elaborati in dimensioni di file leggibili dalluomo connumfmt
.
Risposta
Si può ottenere ciò utilizzando la propria console del browser ed eseguendo
fetch("https://api.github.com/repos/[USERNAME]/[REPO]") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) )
Consideriamo un esempio pratico.
Supponendo che si voglia trovare la dimensione di questo repository utilizzando Firefox.
Apri la console con Ctrl
+ Shift
+ K
.
Quindi incolla il seguente codice
fetch("https://api.github.com/repos/goncaloperes/TimeSeries") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) )
Premi invio e si riceverà la dimensione del repo come si può vedere nellimmagine qui sotto.