repositorio - git tag name
Encuentra el tamaƱo de git repo (5)
¿Cuál es una forma sencilla de encontrar el tamaño de mi repositorio git? Y no me refiero a du -h
en el directorio raíz de mi repositorio. Tengo muchos archivos ignorados por lo que el tamaño sería diferente del tamaño total de mi repositorio. Básicamente, quiero saber cuántos datos se transferirían al clonar mi repositorio.
ACTUALIZACIÓN git 1.8.3 introdujo una manera más eficiente de obtener un tamaño aproximado:
git count-objects -vH
(ver respuesta por @VonC)
Para diferentes ideas de "tamaño completo" puede usar:
git bundle create tmp.bundle --all
du -sh tmp.bundle
Cerrar (pero no exacto :)
git gc
du -sh .git/
Con este último, también estarías contando:
- manos
- config (controles remotos, ramas de inserción, configuraciones (espacios en blanco, combinación, alias, detalles de usuario, etc.)
- escondites (vea ¿Puedo obtener un alijo de un repositorio remoto en una sucursal local? )
- caché rerere (que puede obtener considerable)
- reflogs
- copias de seguridad (de la rama de filtro, por ejemplo) y varias otras cosas (estado intermedio de rebase, bisect, etc.)
El comando git
git count-objects -v
le dará una buena estimación del tamaño del repositorio git. Sin el indicador -v, solo le indica el tamaño de sus archivos desempaquetados. Es posible que este comando no esté en su $ PATH, es posible que tenga que rastrearlo (en Ubuntu lo encontré en / usr / lib / git-core /, por ejemplo).
De la página del manual de Git:
-v, --verbose
Además de la cantidad de objetos sueltos y el espacio en disco consumido, informa la cantidad de objetos en el paquete, la cantidad de paquetes, el espacio en disco que consumen esos paquetes y la cantidad de objetos que se pueden eliminar al ejecutar git prune-package.
Su salida será similar a la siguiente:
count: 1910
size: 19764
in-pack: 41814
packs: 3
size-pack: 1066963
prune-packable: 1
garbage: 0
La línea que estás buscando es size-pack
. Ese es el tamaño de todos los objetos de compromiso empaquetados, o el tamaño más pequeño posible para el nuevo repositorio clonado.
Podrías usar git-sizer
. En el ajuste --verbose
, la salida de ejemplo es (abajo). Busque la línea Total size of files
.
$ git-sizer --verbose Processing blobs: 1652370 Processing trees: 3396199 Processing commits: 722647 Matching commits to trees: 722647 Processing annotated tags: 534 Processing references: 539 | Name | Value | Level of concern | | ---------------------------- | --------- | ------------------------------ | | Overall repository size | | | | * Commits | | | | * Count | 723 k | * | | * Total size | 525 MiB | ** | | * Trees | | | | * Count | 3.40 M | ** | | * Total size | 9.00 GiB | **** | | * Total tree entries | 264 M | ***** | | * Blobs | | | | * Count | 1.65 M | * | | * Total size | 55.8 GiB | ***** | | * Annotated tags | | | | * Count | 534 | | | * References | | | | * Count | 539 | | | | | | | Biggest objects | | | | * Commits | | | | * Maximum size [1] | 72.7 KiB | * | | * Maximum parents [2] | 66 | ****** | | * Trees | | | | * Maximum entries [3] | 1.68 k | * | | * Blobs | | | | * Maximum size [4] | 13.5 MiB | * | | | | | | History structure | | | | * Maximum history depth | 136 k | | | * Maximum tag depth [5] | 1 | | | | | | | Biggest checkouts | | | | * Number of directories [6] | 4.38 k | ** | | * Maximum path depth [7] | 13 | * | | * Maximum path length [8] | 134 B | * | | * Number of files [9] | 62.3 k | * | | * Total size of files [9] | 747 MiB | | | * Number of symlinks [10] | 40 | | | * Number of submodules | 0 | | [1] 91cc53b0c78596a73fa708cceb7313e7168bb146 [2] 2cde51fbd0f310c8a2c5f977e665c0ac3945b46d [3] 4f86eed5893207aca2c2da86b35b38f2e1ec1fc8 (refs/heads/master:arch/arm/boot/dts) [4] a02b6794337286bc12c907c33d5d75537c240bd0 (refs/heads/master:drivers/gpu/drm/amd/include/asic_reg/vega10/NBIO/nbio_6_1_sh_mask.h) [5] 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c (refs/tags/v2.6.11) [6] 1459754b9d9acc2ffac8525bed6691e15913c6e2 (589b754df3f37ca0a1f96fccde7f91c59266f38a^{tree}) [7] 78a269635e76ed927e17d7883f2d90313570fdbc (dae09011115133666e47c35673c0564b0a702db7^{tree}) [8] ce5f2e31d3bdc1186041fdfd27a5ac96e728f2c5 (refs/heads/master^{tree}) [9] 532bdadc08402b7a72a4b45a2e02e5c710b7d626 (e9ef1fe312b533592e39cddc1327463c30b0ed8d^{tree}) [10] f29a5ea76884ac37e1197bef1941f62fda3f7b99 (f5308d1b83eba20e69df5e0926ba7257c8dd9074^{tree})
Si usa git LFS, git count-objects no cuenta sus binarios, sino solo los punteros a ellos.
Si sus archivos LFS son administrados por Artifactorys, debe usar la API REST:
- Obtenga la API www.jfrog.com desde cualquier motor de búsqueda
- Mira la información de resumen de Get Storage
Tenga en cuenta que, desde git 1.8.3 (abril, 22d 2013) :
Los "
git count-objects
" aprendieron "- la--human-readable
" aka "-H
"--human-readable
para mostrar varios números grandes enKi
/Mi
/GiB
escala según sea necesario.
Eso podría combinarse con la opción -v
mencionada por Jack Morrison en su respuesta .
git gc
git count-objects -vH
( git gc
es importante, como lo menciona la answer A-B-B )
Más (aún git 1.8.3), la salida es más completa:
"
git count-objects -v
" aprendió a reportar archivos de paquetes temporales sobrantes y otra basura en el almacén de objetos .