Jeg vil se den samlede repostørrelse for et projekt, der hostes på GitHub uden at skulle klone det. Nogle gange gør jeg dette:

  1. Start kloning af noget GitHub-lager

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

    Har du allerede drænet 5 MB? Suspender …

    ^Z 
  2. Klon lageret på en server med en normal internetforbindelse bare til se dens størrelse.

  3. Fortsæt (eller afbryd) den lokale kloning.

Hvordan finder jeg ud af lagerstørrelsen på forhånd? I søgningen ser jeg lagerstørrelse, men ikke andre steder.

Kommentarer

Svar

Brug af 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 der ' nej -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 bruge tilføjelsesprogrammet GitHub Repository .

github-infobjælke

Kommentarer

  • Hvorfor downvote? Fungerer udvidelsen eller brugerskriptet ikke eller indeholder malware?
  • Nej, alt fungerer fint …

Svar

Brug Google Chrome-browseren og installer denne udvidelse

Føjer repostørrelsen til hjemmesiden:

GitHub Repo Størrelsesudvidelse skærmbillede

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. hent repo-info fra github api ved hjælp af curl

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 find det krævede attribut-værdi-par.

    . angiver roden til json-kroppen og size er den krævede attr ibute fra rodens krop

Output (størrelsen i kB):

3018913 
  1. Rør derefter output 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 

Output:

2.9G 

For private repos skal du sende et token som header

-H "Authorization: token GITHUB_TOKEN" 

erstatte GITHUB_TOKEN med et github-token , der har adgang til private repos

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

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

Kommentarer

  • Kan du forklare, hvad denne kommando gør? Hvordan hjælper det i denne situation? Tak
  • Den henter metadata fra lageret ved hjælp af curl, og udtrækker derefter " størrelse " felt fra det ved hjælp af jq, konverterer derefter rå bytes til menneskelig læsbar filstørrelse med numfmt.

Svar

Man kan opnå dette ved hjælp af browserens konsol og køre

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

Lad os se på et praktisk eksempel.

Forudsat at man vil finde størrelsen på denne repo ved hjælp af Firefox.

Åbn konsollen med Ctrl + Shift + K.

Indsæt derefter følgende kode

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

Tryk på enter, og en vil modtage størrelsen på repoen, som man kan se i billedet nedenfor.

indtast billedbeskrivelse her

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *