¿Cómo puedo ver el tamaño de un repositorio de GitHub antes de clonarlo?

331

¿Hay alguna manera de ver qué tan grande es un repositorio de Git en GitHub antes de que decidas clonarlo?

Esto parece una estadística realmente obvia / básica, pero no puedo encontrar cómo verla en GitHub.

jhabbott
fuente
44
@KennyTM pregunta muy similar, sí, pero esto es específico para github en lugar de cualquier método que use solo el protocolo git.
jhabbott
1
Para su información, consulte esta extensión de Chrome que agrega automáticamente el tamaño del repositorio al resumen del repositorio de GitHub github.com/harshjv/github-repo-size . ACTUALIZACIÓN: se ha añadido esto como una respuesta
Harsh Vakharia
Aquí hay una pista: mi repositorio más grande contiene solo imágenes de varios formatos, es un repositorio de "ilustraciones" de iconos que utilizo en varias aplicaciones. Sin embargo, GitHub informa que el tamaño es 0. Por lo tanto, supongo que solo considera el tamaño de los archivos fuente conocidos y no considera los tipos de archivos desconocidos.
Jerry Dodge

Respuestas:

276

Hay una manera de acceder a esta información a través de la API de GitHub .

Al recuperar información sobre un repositorio, una propiedad nombrada sizese valora con el tamaño de todo el repositorio (incluido todo su historial), en kilobytes.

Por ejemplo, el repositorio de Git pesa alrededor de 124 MB. Se sizevalora la propiedad de la carga útil JSON devuelta 124283.

Actualizar

El tamaño se expresa en kilobytes según el uso del disco del repositorio del lado del servidor. Sin embargo, para evitar perder demasiado espacio con repositorios con una red grande, GitHub confía en Git Alternates . En esta configuración, calcular el uso del disco contra el repositorio simple no tiene en cuenta el almacén de objetos compartidos y, por lo tanto, devuelve un valor "incompleto" a través de la llamada a la API.

Esta información ha sido proporcionada por el soporte de GitHub.

nulltoken
fuente
12
¿No es el tamaño en MB ahora? He abierto un problema en el soporte de GitHub. Actualizaré la respuesta tan pronto como se cierre el problema.
nulltoken
66
Esto no parece funcionar para repositorios privados. ¿Me estoy perdiendo de algo? ¡Gracias!
nroose
14
@nroose Intenta $ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}. Consulte developer.github.com/v3/#authentication
nulltoken
1
@nulltoken ¿Alguna respuesta a la consulta sobre kB / MB, etc.?
nealmcb
2
Solo bifurqué un repositorio (9 de septiembre de 2018) y es kB, no MB
Jacob Stamm
109

Si posee el repositorio, puede encontrar el tamaño exacto abriendo Configuración de su cuentaRepositorios ( https://github.com/settings/repositories ), y el tamaño del repositorio se muestra junto a su designación.

Si no posee el repositorio, puede bifurcarlo y luego verificarlo en el mismo lugar.

Algo hacky: use la download as a zip fileopción, lea el tamaño de archivo indicado y luego cancélelo.

No recuerdo si la descarga como zip alguna vez funcionó, pero en cualquier caso, hacerlo ahora solo descarga la rama seleccionada actualmente sin historial.

Recubierto
fuente
¿No debería uno tener en cuenta la compresión zip? El código fuente y los archivos de texto se pueden comprimir hasta un 60%, creo.
novato
No conozco una forma de verificar la relación de compresión del zip sin completar la descarga. Por supuesto, puede completar la descarga y luego verificar la relación de compresión. Sin embargo, en ese punto, también podría descomprimir y verificar el tamaño del repositorio directamente. Realmente depende de cuán preciso sea necesario. Y si puede permitirse descargar el repositorio para verificar.
CoatedMoose
1
No pude encontrarlo Settings > Repositories, pero en su lugar encontré el tamaño del repositorio debajo Account Settings > Repositoriesde la página de inicio de su git. Por supuesto, esto solo funciona con repositorios que posee (o fork).
modulitos
La configuración de la cuenta de las organizaciones no parece mostrar el tamaño del repositorio, por lo que solo es así si posee un repositorio como usuario y no como organización.
Bennett Brown el
2
El tamaño del archivo zip no indica en absoluto el tamaño real del repositorio: 1) solo incluye una instantánea del repositorio en una revisión dada sin historial y 2) Los repositorios Git se almacenan como archivos de paquete que están comprimidos, no almacenar duplicados, etc.
kynan
74

Si utiliza el navegador Google Chrome, puede instalar la extensión GitHub Repository Size .

ingrese la descripción de la imagen aquí

Repo aquí: https://github.com/harshjv/github-repo-size

Gran ola
fuente
44
cualquier puerto firefox?
Banee Ishaque K
2
@BaneeIshaqueK no es lo mismo, pero te muestra el tamaño del repositorio, compruébalo aquí
Syed Shamikh Shabbir
1
ACTUALIZACIÓN Ahora, funciona perfectamente incluso en repositorios privados siempre que proporcione el token Github.
Siddhant Rimal
2
Todavía no es confiable, usa la API de GitHub, que no informa el tamaño correcto. Tengo un repositorio con nada más que imágenes (sin código), y la API informa que el tamaño es 0, aunque es el repositorio más grande que tengo. Esta extensión ni siquiera me muestra el tamaño de este repositorio en particular (probablemente porque ve 0).
Jerry Dodge
19

@larowlan gran código de muestra. Con el nuevo GitHub API V3, la declaración curl debe actualizarse. Además, el inicio de sesión ya no es obligatorio:

curl https://api.github.com/repos/$2/$3 2> /dev/null | grep size | tr -dc '[:digit:]'

Por ejemplo:

curl https://api.github.com/repos/dotnet/roslyn 2> /dev/null | grep size | tr -dc '[:digit:]'

devuelve 931668(en KB), que es casi un GB.

VMTrooper
fuente
55
Esto no parece funcionar para repositorios privados. ¿Hay algo que este olvidando? ¡Gracias!
nroose
1
Desearía que ampliaras más tu respuesta con algunas explicaciones, para que la gente pueda cambiarla según sus necesidades.
Shimmy Weitzhandler
10

Para hacer esto con curl (sudo apt-get curl) y json pretty (sudo gem install jsonpretty json):

curl -u "YOURGITHUBUSERNAME" http://github.com/api/v2/json/repos/show/OWNER/REPOSITORY |
  jsonpretty

Reemplace YOURGITHUBUSERNAME con su nombre de usuario de GitHub (vaya figura).

Reemplace PROPIETARIO con el nombre de usuario Git del propietario del repositorio. Reemplace REPOSITORY con el nombre del repositorio.

O como un buen script Bash (pegue esto en un archivo llamado gitrepo-info):

#!/bin/bash
if [ $# -ne 3 ]
then
  echo "Usage: gitrepo-info <username> <owner> <repo>"
  exit 65
fi
curl -u "$1" http://github.com/api/v2/json/repos/show/$2/$3|jsonpretty

Úselo así:

gitrepo-info larowlan pisi reel

Esto me dará información sobre el repositorio pisi / reel en GitHub.

larowlan
fuente
1

Debe seguir la API de GitHub. Consulte la documentación aquí para obtener todos los detalles sobre su repositorio. Requiere que realice una solicitud GET como:

GET / repos /: owner /: repositorio

Necesita reemplazar dos cosas:

  1. : propietario : el nombre de usuario de la persona propietaria del repositorio
  2. : repositorio - El nombre del repositorio

Por ejemplo, mi nombre de usuario maheshmnj , y tengo un repositorio, flutter-ui-nice , por lo que mi URL GET será:

https://api.github.com/repos/maheshmnj/flutter-ui-nice

Al hacer una solicitud GET, se inundará con algunos datos JSON y probablemente en la línea número 78 debería ver una clave llamada size que devolverá el tamaño del repositorio.

Consejo: cuando trabaje con JSON, le sugiero que agregue un complemento que formatee los datos de JSON para facilitar la lectura de JSON. Instala el complemento .

maheshmnj
fuente
A) Como muchos informan, este tamaño no es exacto ni confiable. B) Incluso si lo fuera, su (s) nota (s) sobre leer visualmente el JSON, el número de línea y el formato ... todo no tiene sentido. JSON no está destinado a que los humanos lean, está destinado a que las computadoras lo lean. Debe mencionar leer la sizeclave en la respuesta, no la línea 78. Sin mencionar que los diferentes formateadores tendrán saltos de línea diferentes en diferentes lugares, dejando los datos deseados en un número de línea diferente.
Jerry Dodge
@JerryDodge lo primero que debe leer cuidadosamente es la respuesta que he mencionado `` `` debería ver una clave llamada size '' `` y dije que debería probablyverla en la línea no 78, por lo que eso indica que debería ver la clave de tamaño en algún lugar alrededor de 78 En segundo lugar, si el tamaño de la github apis no era exacto, no creo que encuentre algo más preciso que github apis.
maheshmnj
Tengo un repositorio de imágenes. Las imágenes son datos binarios. No hay archivos de texto en este repositorio en absoluto. GitHub informa en todas partes que consume 0 bytes. Incluso el sitio web / complemento.
Jerry Dodge
0

Para resumir las soluciones @larowlan, @VMTrooper y @vahid chakoshy:

#!/usr/bin/env bash


if [ "$#" -eq 2 ]; then
    echo "$(echo "scale=2; $(curl https://api.github.com/repos/$1/$2 2>/dev/null \
    | grep size | head -1 | tr -dc '[:digit:]') / 1024" | bc)MB"
elif [ "$#" -eq 3 ] && [ "$1" == "-z" ]; then
    # For some reason Content-Length header is returned only on second try
    curl -I https://codeload.github.com/$2/$3/zip/master &>/dev/null  
    echo "$(echo "scale=2; $(curl -I https://codeload.github.com/$2/$3/zip/master \
    2>/dev/null | grep Content-Length | cut -d' ' -f2 | tr -d '\r') / 1024 / 1024" \
    | bc)MB"
else
    printf "Usage: $(basename $0) [-z] OWNER REPO\n\n"
    printf "Get github repository size or, optionally [-z], the size of the zipped\n"
    printf "master branch (`Download ZIP` link on repo page).\n"
    exit 1
fi
golem
fuente
0

Para un repositorio privado, deberá obtener un token de acceso personal en https://github.com/settings/tokens .

Luego use el siguiente comando curl para obtener los detalles (sustituyendo en valores por [token], [propietario] y [nombre]):

curl -u git:[token] https://api.github.com/repos/[owner]/[name] 2> /dev/null | grep size

Como se mencionó anteriormente, el tamaño puede estar en MB o KB.

Mike Godin
fuente