creo que hay un par de problemas con esta pregunta: git count-objects
no representa verdaderamente el tamaño de un repositorio (incluso git count-object -v
en realidad no); si está utilizando algo que no sea el transporte HTTP tonto, se creará un nuevo paquete para su clon cuando lo haga; y (como señaló VonC ) cualquier cosa que haga para analizar un repositorio remoto no tendrá en cuenta el tamaño de copia de trabajo .
Dicho esto, si están utilizando el transporte HTTP mudo (github, por ejemplo, no lo es), se podría escribir un script de shell que utiliza rizo para consultar los tamaños de todos los los objetos y paquetes. Eso podría acercarlo más, pero está haciendo más solicitudes http que tendrá que hacer nuevamente para hacer el clon.
Es posible averiguar qué git-fetch
enviaría a través del cable (para un transporte inteligente http ) y enviar que para analizar los resultados, pero no es realmente una buena cosa que hacer. Básicamente, le está pidiendo al servidor de destino que empaquete los resultados que simplemente va a descargar y desechar, para que pueda descargarlos nuevamente para guardarlos.
Algo así como estos pasos se puede utilizar para este efecto:
url=https://github.com/gitster/git.git
git ls-remote $url |
grep '[[:space:]]\(HEAD\|refs/heads/master\|refs/tags\)' |
grep -v '\^{}$' | awk '{print "0032want " $1}' > binarydata
echo 00000009done >> binarydata
curl -s -X POST --data-binary @binarydata \
-H "Content-Type: application/x-git-upload-pack-request" \
-H "Accept-Encoding: deflate, gzip" \
-H "Accept: application/x-git-upload-pack-result" \
-A "git/1.7.9" $url/git-upload-pack | wc -c
Al final de todo esto, el servidor remoto se han empacado maestro/HEAD y todas las etiquetas para usted y usted ha descargado todo el archivo del paquete solo al para ver qué tan grande será cuando lo descargue durante su clonación.
Cuando finalmente un clon, la copia de trabajo se creará también, así que todo el directorio será más grande que estos comandos escupir, pero el archivo de paquete de general es la mayor parte de una copia de trabajo con cualquier historia significativa
@Dogbert Puede averiguar el tamaño de un GitHub alojada por cortesía del repositorio a su API (ver este [SO pregunta] (http: // stackoverflow. com/questions/8646517/see-the-size-of-a-github-repo-before-cloning-it)). Aunque no he encontrado nada relacionado con el recuento de objetos. Hth. – nulltoken