Quel est un moyen simple de trouver la taille de mon référentiel git? Et je ne parle pas de du -h
dans le répertoire racine de mon référentiel. J'ai beaucoup de fichiers ignorés, donc cette taille serait différente de la taille totale de mes prises en pension. Je veux essentiellement savoir quelle quantité de données serait transférée lors du clonage de mon repo.
UPDATE git 1.8.3 a introduit un moyen plus efficace d'obtenir une taille approximative:
git count-objects -vH
(voir la réponse de @VonC)
Pour différentes idées de "taille complète", vous pouvez utiliser:
git bundle create tmp.bundle --all
du -sh tmp.bundle
Fermer (mais pas exact :)
git gc
du -sh .git/
Avec ce dernier, vous compteriez aussi:
Notez que, depuis git 1.8.3 (22 avril 2013) :
"_
git count-objects
_" appris "_--human-readable
_" ou "_-H
_" option permettant d'afficher divers grands nombres dansKi
/Mi
/GiB
mis à l'échelle si nécessaire .
Cela pourrait être combiné avec l'option _-v
_ mentionnée par Jack Morrison dans sa réponse .
_git gc
git count-objects -vH
_
( git gc
est important, comme indiqué par A-B-B 's réponse )
De plus (toujours git 1.8.3), la sortie est plus complète:
"_
git count-objects -v
_" a appris à signaler les fichiers de paquets temporaires restants et autres déchets dans le magasin d'objets .
La commande git
git count-objects -v
vous donnera une bonne estimation de la taille du dépôt git. Sans l'indicateur -v, il ne vous indique que la taille de vos fichiers décompressés. Cette commande peut ne pas être dans votre $ PATH, vous devrez peut-être la localiser (sous Ubuntu, je l'ai trouvée dans/usr/lib/git-core /, par exemple).
De la page de manuel Git:
-v, --verbose
En plus du nombre d'objets perdus et de l'espace disque utilisé, il indique le nombre d'objets intégrés, le nombre de packs, l'espace disque utilisé par ces packs et le nombre d'objets pouvant être supprimés à l'aide de git Prune-packed.
Votre sortie ressemblera à ce qui suit:
count: 1910
size: 19764
in-pack: 41814
packs: 3
size-pack: 1066963
Prune-packable: 1
garbage: 0
La ligne que vous recherchez est size-pack
. Il s’agit de la taille de tous les objets de validation compressés ou de la plus petite taille possible pour le nouveau référentiel cloné.
Vous pouvez utiliser git-sizer
. Dans le paramètre _--verbose
_, l'exemple de sortie est (ci-dessous). Recherchez la ligne _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})
_
I think Ceci vous donne la liste totale de tous les fichiers de l'historique des pensions:
git rev-list --objects --all | git cat-file --batch-check="%(objectsize) %(rest)" | cut -d" " -f1 | paste -s -d + - | bc
Vous pouvez remplacer --all
par un arbre (HEAD
, Origin/master
, etc.) pour calculer la taille d'une branche.
Si vous utilisez git LFS, git count-objects ne compte pas vos fichiers binaires, mais uniquement leurs pointeurs.
Si vos fichiers LFS sont gérés par Artifactory, vous devez utiliser l'API REST: