Chci zobrazit celkovou velikost repo projektu hostovaného na GitHubu bez nutnosti jeho klonování. Někdy to udělám:

  1. 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 
  2. Klonujte úložiště na serveru s normálním připojením k internetu právě na zobrazit jeho velikost.

  3. 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

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 pro xargs, 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 .

informační panel 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:

Snímek obrazovky rozšíření GitHub Repo Size

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í:

  1. 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, ... } 
  1. Odošlete odpověď json do analyzátoru jq a najděte požadovaný pár atribut-hodnota.

    . označuje kořen těla json a size je požadovaný attr ibute z kořenového těla

Výstup (velikost v kB):

3018913 
  1. 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.

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.

zde zadejte popis obrázku

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *