Ik wil de totale repo-grootte bekijken van een project dat op GitHub wordt gehost zonder het te hoeven klonen. Soms doe ik dit:
-
Begin met het klonen van een GitHub-repository
Objecten ontvangen: 45% (218 / 476), 5,50 MiB | 27 KiB / s
Al 5 MB leeggemaakt? Suspend …
^Z
-
Kloon de repository op een server met een normale internetverbinding alleen om bekijk de grootte.
- Ga door (of stop) met het lokale klonen.
Hoe kom ik er van tevoren achter de grootte van de repository? In de zoekopdracht zie ik de grootte van de opslagplaats, maar niet op andere plaatsen.
Reacties
- Controleer de antwoorden op deze Stack Overflow-vraag .
Answer
Github API gebruiken:
$ 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,
Reacties
- Op Mac is er ' geen
-i
parameter voorxargs
, dus ' 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
- en dat is de grootte in … kilobytes?
Antwoord
In Firefox kunt u de add-on GitHub Repository Size gebruiken.
Reacties
- Waarom de downvote? Werkt de extensie of het gebruikerscript niet of bevat het malware?
- Nee, alles werkt prima …
Antwoord
Gebruik de Google Chrome-browser en installeer deze extensie
Voegt de repo-grootte toe aan de startpagina:
Antwoord
curl \ -H "Accept: application/vnd.github.v3+json" \ -s https://api.github.com/repos/torvalds/linux | \ jq ".size" | \ numfmt --to=iec --from-unit=1024
Uitleg:
- gegevens van opslagplaats ophalen van github api met curl
We krijgen een json-antwoord als volgt:
{ "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, ... }
-
Stuur het json-antwoord naar jq parser en vind het vereiste attribuut-waarde-paar.
.
geeft de root van de json-body aan ensize
is de vereiste attr ibute vanaf de hoofdtekst
Uitvoer (de grootte in kB):
3018913
- Leid de uitvoer vervolgens door naar 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
Uitvoer:
2.9G
Geef voor privé-opslagplaatsen een token door als een header
-H "Authorization: token GITHUB_TOKEN"
vervang GITHUB_TOKEN met een github-token dat toegang heeft tot privéopslagplaatsen
https://command-not-found.com/jq
https://command-not-found.com/numfmt
Reacties
- Kun je uitleggen wat dit commando doet? Hoe helpt het in deze situatie? Bedankt
- Het haalt metadata van de opslagplaats op met
curl
, en extraheert vervolgens " size " -veld eruit metjq
, en converteert vervolgens onbewerkte bytes naar voor mensen leesbare bestandsgrootte metnumfmt
.
Answer
Men kan dit bereiken door de browserconsole te gebruiken en
fetch("https://api.github.com/repos/[USERNAME]/[REPO]") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) )
Laten we eens kijken naar een praktisch voorbeeld.
Ervan uitgaande dat men de grootte van deze opslagplaats wil vinden met Firefox.
Open de console met Ctrl
+ Shift
+ K
.
Plak dan de volgende code
fetch("https://api.github.com/repos/goncaloperes/TimeSeries") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) )
Druk op enter en men zal de grootte van de repo ontvangen zoals men kan zien in de afbeelding hieronder.