Korben, roi d’internet, logo bébé avec des lunettes en mode thug life Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Korben Upgrade your mind

Git-Sizer – Pour vous aider à faire maigrir vos dépôts Git

Github, qu'on ne présente plus, a mis en ligne sous licence MIT, git-sizer, un outil en ligne de commande, développé en Go, destiné à aider les développeurs à faire maigrir leur dépôt git.

Étant donné que chez Github, ils ont une bonne expérience de ce qui prend de la place dans les dépôts git, ils sont capables d'évaluer l'état de votre dépôt et de vous indiquer avec où se situe le votre par rapport à une moyenne réalisée sur les 78 millions de dépôts, hébergés par Github.

D'après les experts de Github, un dépôt devrait toujours être en dessous des 1GB. Au-delà de 5 GB, ça commence à devenir craignos. En général, cela est dû au stockage de fichiers générés, aux blobs (médias vidéo, photo, binaires. etc.) alors qu'il est possible de les stocker hors dépôt grâce à Git-LFS, aux zip et autres fichiers tar qui se retrouvent là par manque de rigueur, sans oublier les trop nombreux tags et branches qui ne servent pas à grand-chose, les arborescences contenant plus de 200 répertoires et sous répertoires, les fichiers textes très gros versionnés, ou tout simplement un trop grand nombre d'objets référencés. Et dans ce cas-là, c'est peut-être pas con de diviser son projet en sous-projets plus modestes.

Il existe encore de très nombreuses raisons qui font qu'un git peut être trop gros et pour les connaitre, je vous invite à lire la doc de git-sizer ici.

Pour installer Git-Sizer, vérifiez bien que vous avez le dernier client git >=2.6, puis rendez-vous ici pour récupérer le binaire qui correspond à votre système d'exploitation. Dézippez-le puis rendez l’exécutable et ajoutez le répertoire d'installation à votre PATH pour pouvoir le lancer directement depuis vos dépôts.

Placez-vous ensuite dans le dépôt dont vous voulez évaluer la taille et lancez la commande

git-sizer --verbose

Et vous obtiendez un joli résultat comme celui-ci (là ça concerne le dépôt Linux)

$ 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})

Plus il y a d'étoiles, plus c'est mauvais, car la note dépasse la moyenne des autres dépôts git présents sur Github. Donc ça vous permettra de mieux cibler vos efforts pour réaliser la cure d'amaigrissement de votre dépôt.

Les sources et la doc de Git-Sizer sont ici.

Amusez-vous bien !

Source


SQLI recrute un Chef de Projet Digital

Nous favorisons la mobilité au sein du Groupe afin de répondre au mieux aux souhaits de chacun

Nous recrutons des férus de technologies, des talents créatifs, de jeunes consultants ainsi des jeunes diplômés, issus d’écoles d’ingénieurs, de commerce ou d’universités, en développement, consulting, UX/UI, mais aussi des experts en agilité, architecture et management de projet.

Vous souhaitez vous investir dans des environnements projets innovants.

Au quotidien, vous assurez les responsabilités de gestion de projets dans des missions avec engagement de résultats pour le compte de nos clients. Vous évoluez dans des activités d’avant-vente et de conduite des projets. Doté d’un bon relationnel, vous instaurez une relation de confiance avec vos clients et vos équipes et savez concilier les objectifs du client et les intérêts de SQLI.

Découvrir le job



Rejoindre la discussion sur Korben Communauté