Jag vill se den totala repostorleken för ett projekt som är värd på GitHub utan att behöva klona det. Ibland gör jag det här:

  1. Börja klona lite GitHub-arkiv

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

    Har du redan tömt 5 MB? Avbryt …

    ^Z 
  2. Klona förvaret på en server med en normal internetanslutning bara till se dess storlek.

  3. Fortsätt (eller avbryt) den lokala kloningen.

Hur får jag reda på förvarets storlek i förväg? I sökningen ser jag förvarets storlek, men inte på andra ställen.

Kommentarer

Svar

Med hjälp 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 finns ' nej -i parameter för xargs, så att den ' 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
  • och det är storlek i … kilobytes?

Svar

I Firefox kan du använda tillägget GitHub Repository .

github infofält

Kommentarer

  • Varför nedröstningen? Fungerar tillägget eller användarskriptet eller innehåller det skadlig kod?
  • Nej, allt fungerar bra …

Svar

Använd webbläsaren Google Chrome och installera den här förlängningen

Lägger till repostorleken på hemsidan:

GitHub Repo skärmdump för storlekstillägg

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 

Förklaring:

  1. hämta repoinformation från github api med curl

Vi får ett json-svar så här:

{ "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 till jq-parser och hitta önskat attribut-värde-par.

    . anger roten till json-kroppen och size är det obligatoriska attr ibute från rotkroppen

Output (storleken i kB):

3018913 
  1. Rör sedan utgången till 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 

Utdata:

2.9G 

För privata repor skickar du en token som rubrik

-H "Authorization: token GITHUB_TOKEN" 

ersätter GITHUB_TOKEN med en github-token som har tillgång till privata repor

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

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

Kommentarer

  • Kan du förklara vad det här kommandot gör? Hur hjälper det i den här situationen? Tack
  • Den hämtar förvarets metadata med curl och extraherar sedan " storlek " fält från det med jq, omvandlar sedan råa byte till läsbar filstorlek med numfmt.

Svar

Man kan uppnå detta med en webbläsarkonsol och kör

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

Låt oss betrakta ett praktiskt exempel.

Förutsatt att man vill hitta storleken på denna repo med Firefox.

Öppna konsolen med Ctrl + Shift + K.

Klistra sedan in följande kod

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

Tryck på enter och en får storleken på repo som man kan se i bilden nedan.

ange bildbeskrivning här

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *