Ik wil de totale repo-grootte bekijken van een project dat op GitHub wordt gehost zonder het te hoeven klonen. Soms doe ik dit:

  1. 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 
  2. Kloon de repository op een server met een normale internetverbinding alleen om bekijk de grootte.

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

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

github info bar

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:

Schermafbeelding van extensie GitHub Repo Size

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:

  1. 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, ... } 
  1. Stuur het json-antwoord naar jq parser en vind het vereiste attribuut-waarde-paar.

    . geeft de root van de json-body aan en size is de vereiste attr ibute vanaf de hoofdtekst

Uitvoer (de grootte in kB):

3018913 
  1. 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 met jq, en converteert vervolgens onbewerkte bytes naar voor mensen leesbare bestandsgrootte met numfmt.

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.

voer hier een afbeeldingbeschrijving in

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *