Chci zobrazit celkovou velikost repo projektu hostovaného na GitHubu bez nutnosti jeho klonování. Někdy to udělám:
-
Spustit klonování nějakého úložiště GitHub
Příjem objektů: 45% (218 / 476), 5,50 MiB | 27 KiB / s
Již máte vyčerpaných 5 MB? Pozastavit …
^Z
-
Klonujte úložiště na serveru s normálním připojením k internetu právě na zobrazit jeho velikost.
- Pokračovat (nebo přerušit) lokální klonování.
Jak zjistím velikost úložiště předem? Ve vyhledávání vidím velikost úložiště, ale ne na jiných místech.
Komentáře
- Zkontrolujte odpovědi na tato otázka přetečení zásobníku .
odpověď
Použití Github API:
$ 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,
Komentáře
- Na počítačích Mac není ' s ne
-i
parametr proxargs
, takže ' 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
- a to je velikost v … kilobajtech?
Odpověď
Ve Firefoxu můžete použít doplněk Velikost úložiště GitHub .
Komentáře
- Proč hlasovat proti? Nefunguje rozšíření nebo uživatelský skript nebo obsahuje malware?
- Ne, všechno funguje dobře …
Odpovědět
Použijte prohlížeč Google Chrome a nainstalujte toto rozšíření
Přidá velikost repo na domovskou stránku:
Odpověď
curl \ -H "Accept: application/vnd.github.v3+json" \ -s https://api.github.com/repos/torvalds/linux | \ jq ".size" | \ numfmt --to=iec --from-unit=1024
Vysvětlení:
- načíst repo informace z github api pomocí zvlnění
Dostaneme odpověď typu JSON takto:
{ "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, ... }
-
Odošlete odpověď json do analyzátoru jq a najděte požadovaný pár atribut-hodnota.
.
označuje kořen těla json asize
je požadovaný attr ibute z kořenového těla
Výstup (velikost v kB):
3018913
- Potom výstup přesměrujte na 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
Výstup:
2.9G
Pro soukromá úložiště předejte token jako záhlaví
-H "Authorization: token GITHUB_TOKEN"
nahradit GITHUB_TOKEN s tokenem github , který má přístup k soukromým repozitům
https://command-not-found.com/jq
https://command-not-found.com/numfmt
Komentáře
- Můžete vysvětlit, co tento příkaz dělá? Jak to v této situaci pomáhá? Díky
- Načte metadata úložiště pomocí
curl
a poté extrahuje " velikost " pole z něj pomocíjq
a poté pomocínumfmt
.
ul převede nezpracované bajty na velikost souboru čitelnou pro člověka. >
Odpověď
Lze toho dosáhnout pomocí konzoly prohlížeče a spuštěním
fetch("https://api.github.com/repos/[USERNAME]/[REPO]") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) )
Podívejme se na praktický příklad.
Za předpokladu, že chceme najít velikost tohoto repo pomocí Firefoxu.
Otevřete konzolu pomocí Ctrl
+ Shift
+ K
.
Poté vložte následující kód
fetch("https://api.github.com/repos/goncaloperes/TimeSeries") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) )
Stiskněte klávesu Enter a jeden obdrží velikost repo, jak je vidět na obrázku níže.