Quiero ver el tamaño total del repositorio de un proyecto alojado en GitHub sin tener que clonarlo. A veces hago esto:
-
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
-
Clonar el repositorio en un servidor con una conexión a Internet normal solo para ver su tamaño.
- 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
- Verifique las respuestas a esta pregunta de Stack Overflow .
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 paraxargs
, 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 .
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:
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:
- 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, ... }
-
Canalice la respuesta json al analizador jq y busque el par atributo-valor requerido.
.
indica la raíz del cuerpo json ysize
es el atributo requerido tributo desde el cuerpo raíz
Salida (el tamaño en kB):
3018913
- 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 usandojq
, luego convierte bytes sin procesar en legibles por humanos connumfmt
.
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.