Jeg vil se den totale repostørrelsen på et prosjekt som er vert på GitHub uten å måtte klone det. Noen ganger gjør jeg dette:

  1. Begynn å klone noe GitHub-arkiv

    Mottakende objekter: 45% (218 / 476), 5,50 MiB | 27 KiB / s

    Har du allerede drenert 5MB? Suspend …

    ^Z 
  2. Klon depotet på en server med en normal internettforbindelse bare til se størrelsen.

  3. Fortsett (eller avbryt) den lokale kloningen.

Hvordan finner jeg ut depotstørrelsen på forhånd? I søket ser jeg depotstørrelse, men ikke andre steder.

Kommentarer

Svar

Ved hjelp av 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, 

Kommentarer

  • På mac er det ' nei -i parameter for xargs, så det ' 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
  • og det er størrelse i … kilobyte?

Svar

I Firefox kan du bruke GitHub Repository Size -tillegget.

github info bar

Kommentarer

  • Hvorfor nedstemmen? Fungerer ikke utvidelsen eller brukerskriptet eller inneholder skadelig programvare?
  • Nei, alt fungerer bra …

Svar

Bruk Google Chrome-nettleseren og installer denne utvidelsen

Legger til repostørrelsen på hjemmesiden:

Skjermbilde av GitHub Repo størrelseutvidelse

Svar

curl \ -H "Accept: application/vnd.github.v3+json" \ -s https://api.github.com/repos/torvalds/linux | \ jq ".size" | \ numfmt --to=iec --from-unit=1024 

Forklaring:

  1. henter repoinfo fra github api ved hjelp av krøll

Vi får et json-svar som dette:

{ "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. Rør json-svaret til jq parser , og finn ønsket attributt-verdi-par.

    . angir roten til json-kroppen og size er den nødvendige attr ibute fra rotkroppen

Utgang (størrelsen i kB):

3018913 
  1. Rør deretter utgangen til 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 

Utgang:

2.9G 

For private repoer send et token som en header

-H "Authorization: token GITHUB_TOKEN" 

erstatt GITHUB_TOKEN med et github-token som har tilgang til private repoer

https://command-not-found.com/jq

https://command-not-found.com/numfmt

Kommentarer

  • Kan du forklare hva denne kommandoen gjør? Hvordan hjelper det i denne situasjonen? Takk
  • Den henter lagringsmetadata ved hjelp av curl, og trekker deretter ut " størrelse " felt fra det ved hjelp av jq, og konverterer deretter rå byte til menneskelig lesbar filstørrelse med numfmt.

Svar

Man kan oppnå dette ved å bruke nettleserkonsollen og kjøre

fetch("https://api.github.com/repos/[USERNAME]/[REPO]") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) ) 

La oss vurdere et praktisk eksempel.

Forutsatt at man vil finne størrelsen på denne repoen ved hjelp av Firefox.

Åpne konsollen med Ctrl + Shift + K.

Lim deretter inn følgende kode

fetch("https://api.github.com/repos/goncaloperes/TimeSeries") .then(v => v.json()).then((function(v){ console.log(v["size"] + "KB") }) ) 

Trykk på enter, og en vil motta størrelsen på repoen som du kan se i bildet nedenfor.

skriv inn bildebeskrivelse her

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *