Quiero ver el tamaño total del repositorio de un proyecto alojado en GitHub sin tener que clonarlo. A veces hago esto:

  1. Empiezo a clonar algún repositorio de GitHub

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

    ¿Ya agotó 5 MB? Suspender …

    ^Z 
  2. Clonar el repositorio en un servidor con una conexión a Internet normal solo para ver su tamaño.

  3. Continuar (o cancelar) la clonación local.

¿Cómo averiguo el tamaño del repositorio por adelantado? En la búsqueda veo el tamaño del repositorio, pero no en otros lugares.

Comentarios

Respuesta

Usando la API de Github:

$ 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, 

Comentarios

  • En mac, ' no -i parámetro para xargs, por lo que ' 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
  • ¿Y ese es el tamaño en … kilobytes?

Respuesta

En Firefox, puede utilizar el complemento GitHub Repository Size .

barra de información de github

Comentarios

  • ¿Por qué el voto negativo? ¿La extensión o el script de usuario no funcionan o contienen malware?
  • No, todo funciona bien …

Responder

Utilice el navegador Google Chrome e instale esta extensión

Agrega el tamaño del repositorio a la página de inicio:

Captura de pantalla de la extensión GitHub Repo Size

Respuesta

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

Explicación:

  1. obtener información del repositorio de github api con curl

Obtenemos una respuesta json como esta:

{ "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. Canalice la respuesta json al analizador jq y busque el par atributo-valor requerido.

    . indica la raíz del cuerpo json y size es el atributo requerido tributo desde el cuerpo raíz

Salida (el tamaño en kB):

3018913 
  1. Luego, canalice la salida a 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 

Salida:

2.9G 

Para repositorios privados, pase un token como encabezado

-H "Authorization: token GITHUB_TOKEN" 

reemplazar GITHUB_TOKEN con un token de github que tiene acceso a repositorios privados

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

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

Comentarios

  • ¿Puede explicar qué hace este comando? ¿Cómo ayuda en esta situación? Gracias
  • Obtiene metadatos del repositorio usando curl, luego extrae " tamaño " campo de él usando jq, luego convierte bytes sin procesar en legibles por humanos con numfmt.

Respuesta

Esto se puede lograr usando la consola del navegador y ejecutando

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

Consideremos un ejemplo práctico.

Suponiendo que uno quiera encontrar el tamaño de este repositorio usando Firefox.

Abra la consola con Ctrl + Shift + K.

Luego pegue el siguiente código

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

Presione enter y se recibirá el tamaño del repositorio como se puede ver en la siguiente imagen.

ingrese la descripción de la imagen aquí

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *