Date de la publication : 24 octobre 2025
Lecture : 12 min
Avec le script Git Much Faster, diminuez considérablement les temps de clonage Git et l'espace disque utilisé, jusqu'à 93 et 98 %, respectivement.
Prenons l'exemple d'un projet Chromium dont vous devez cloner le dépôt. Vous avez lancé la commande git clone et devez patienter pendant 95 minutes avant que votre répertoire de travail ne soit enfin prêt. Bien sûr, cela vous donne le temps de boire un café, de consulter vos e-mails et même de partir en pause déjeuner, mais cette situation est loin d'être idéale. Malheureusement, c'est une réalité que partagent les équipes de développement qui travaillent avec de grands dépôts contenant plus de 50 Go de données.
L'impact négatif sur la productivité est colossal. Les pipelines CI/CD sont paralysés, en attendant que les clonages de dépôts se terminent. Les coûts d'infrastructure explosent, avec des ressources de calcul inutilisées. La frustration ressentie par les équipes de développement augmente, car le changement de contexte est devenu la norme.
Et s'il était possible de réduire cette attente de 95 minutes à seulement 6 minutes et de diminuer de 93 % les temps de clonage grâce à des techniques éprouvées ?
Git Much Faster est un script complet de benchmarking et d'optimisation qui révolutionne la gestion des dépôts Git volumineux. Né d'une expérience concrète d'optimisation des workflows de développement de systèmes embarqués, il fournit des stratégies concrètes pour améliorer de façon mesurable les performances des clonages Git standard et des configurations Git optimisées, et tirer parti de l'outil Scalar intégré à Git.
Découvrez dans cet article comment réduire drastiquement les temps de clonage Git à l'aide de stratégies d'optimisation et explorez les résultats de benchmarks de performance réels issus de dépôts majeurs (tels que le noyau Linux et Chromium). Vous apprendrez également comment mettre en œuvre ces optimisations en toute sécurité dans vos environnements de développement et CI/CD.
Le script Git Much Faster vous permet d’effectuer un benchmark des différentes approches d'optimisation du clonage sur votre environnement cible, qu'il s'agisse d'un poste de travail classique, d'un outil d'intégration continue, de solutions de développement cloud ou de clonages spécialisés pour GitOps. Il intègre également des paramètres de configuration optimisés pour des clonages ultra-rapides, que vous pouvez utiliser comme point de départ et ajuster selon vos besoins, ou désactiver si certaines configurations ne sont pas adaptées à votre cas d'utilisation.
Git Much Faster répond à une problématique réelle du comportement de clonage par défaut de Git, qui privilégie la sécurité au détriment de la rapidité. Cette approche convient aux dépôts de petite taille, mais elle n'est pas adaptée aux codes sources volumineux ni aux ressources binaires étendues ou aux structures de monorepo complexes.
Cette problématique se manifeste dans des scénarios de plus en plus courants. En effet, les équipes de développement de systèmes embarqués héritent de dépôts avec de nombreux binaires de micrologiciels hérités, bootloaders et SDK de fournisseurs stockés directement dans le contrôle de version. Les applications web accumulent des années de ressources marketing et de fichiers de design. Les projets de développement de jeux vidéo contiennent des modèles 3D et fichiers audio volumineux avec des dépôts qui atteignent alors plusieurs dizaines de gigaoctets.
Les pipelines CI/CD sont particulièrement affectés : chaque job nécessite un nouveau clonage du dépôt, et lorsque cette opération dure entre 20 et 90 minutes, le workflow complet de développement est paralysé. Les coûts d'infrastructure sont également multipliés, car les ressources de calcul restent inutilisées pendant ces longues opérations de clonage.
Git Much Faster apporte la solution grâce à un benchmark complet comparant quatre stratégies distinctes : le clonage Git standard (historique complet comme base de référence), le clonage Git optimisé (configurations personnalisées avec compression désactivée et checkout parcellaire (« sparse »)), le clonage Git avec Scalar (clonage partiel intégré) et l'évaluation du répertoire actuel (analyse des dépôts existants sans nouveau clonage).
Git Much Faster fournit des benchmarks mesurables et reproductibles dans des environnements AWS contrôlés, afin d'éliminer les variables qui rendent habituellement les tests de performance peu fiables. Sa véritable puissance réside dans sa capacité à exécuter tous les benchmarks, quel que soit l'environnement cible. Ainsi, même si certains développeurs souffrent de connexions réseau trop lentes, vous pouvez identifier la meilleure stratégie d'optimisation du clonage adaptée à chaque situation.
→ Essayez GitLab Ultimate et GitLab Duo Enterprise gratuitement.
Git Much Faster est particulièrement efficace, car il s'attaque aux principaux goulots d'étranglement de Git à l'aide d'une approche multicouche qui cible à la fois les transferts réseau, l'utilisation du processeur et les modèles de stockage.
Les gains les plus importants reposent sur deux optimisations majeures. Premièrement, core.compression=0 : cette option désactive la compression, gourmande en ressources CPU lors des transferts réseau. Sur les réseaux modernes à haut débit, les cycles CPU nécessaires pour la compression des données dépasse souvent les économies réalisées sur la bande passante. À elle seule, cette optimisation réduit le temps de clonage de 40 % à 60 %.
Deuxièmement, http.postBuffer=1024M : Git utilise par défaut un tampon HTTP relativement petit. L'augmentation de sa taille permet de traiter des opérations plus importantes sans les fragmenter en plusieurs requêtes, ce qui réduit considérablement la surcharge du protocole, surtout pour les gros dépôts.
Git Much Faster tire également parti des clonages superficiels (« shallow ») (--depth=1) qui ne récupèrent que le dernier commit et des clonages partiels (--filter=blob:none) qui diffèrent le téléchargement du contenu des fichiers jusqu'au checkout. Les clonages superficiels réduisent le volume de données de 70 % à 90 % pour les dépôts matures, tandis que les clonages partiels s'avèrent particulièrement efficaces pour les dépôts contenant des binaires volumineux.
Le checkout parcellaire (« sparse ») offre un contrôle précis des fichiers extraits. Git Much Faster applique une exclusion complète de plus de 30 types de fichiers binaires (images, documents, archives, fichiers multimédias et exécutables), ce qui réduit la taille du répertoire de travail jusqu'à 78 % et maintient un accès complet au code source.
L'outil Scalar, intégré à Git depuis la version 2.38, combine un clonage partiel, un checkout parcellaire et une maintenance en arrière-plan. Cependant, les benchmarks révèlent que Scalar ne met pas en œuvre d'optimisations agressives pour la compression et la gestion de la mémoire tampon, qui génèrent pourtant les gains de performance les plus significatifs. En revanche, les tests montrent que l'approche optimisée personnalisée de Git Much Faster surpasse généralement Scalar de 48 % à 67 % tout en offrant des économies d'espace disque similaires.
En optimisant le clonage Git, Git Much Faster contribue également à réduire la charge totale du système en diminuant la taille des requêtes. GitLab s'appuie sur Gitaly Cluster pour assurer une mise à l'échelle horizontale spécialisée. Lorsque les clonages avec historique complet et les monorepos volumineux deviennent la norme, la charge sur Gitaly Cluster augmente fortement. En effet, chaque requête de clonage Git est traitée par un binaire côté serveur qui génère les « fichiers d'empaquetage » à transférer via le réseau. Étant donné que ces opérations Git impliquent l'exécution d'utilitaires de compression côté serveur, elles sollicitent simultanément le CPU, la mémoire et les opérations d'E/S.
Lorsque les opérations de clonage Git sont optimisées pour réduire la quantité totale de données transférées, la charge sur l'ensemble de la pile (client, réseau, service Gitaly et stockage) diminue. Résultat : toutes les couches s'accélèrent et leur coût est par conséquent réduit.
L'efficacité de Git Much Faster a été démontrée par des benchmarks rigoureux effectués sur différents dépôts à l'aide d'une infrastructure AWS homogène avec des instances ARM et des conditions réseau contrôlées.
Dépôt du noyau Linux (7,5 Go au total) : le clonage standard a duré 6 minutes et 29 secondes. Le clonage optimisé a duré 46,28 secondes, soit une amélioration de 88,1 %, et la taille du répertoire .git est passée de 5,9 Go à 284 Mo. Le clonage Scalar a duré 2 minutes et 21 secondes (soit une amélioration de 63,7 %), mais a été 67,3 % plus lent qu'avec l'approche optimisée.
Dépôt Chromium (60,9 Go au total) : le clonage standard a duré 95 minutes et 12 secondes. Le clonage optimisé a duré 6 minutes et 41 secondes, soit une amélioration spectaculaire de 93 %, et la taille du répertoire .git est passée de 55,7 Go à 850 Mo. Le clonage Scalar a duré 13 minutes et 3 secondes (soit une amélioration de 86,3 %), mais il reste 48,8 % plus lent qu'avec l'approche optimisée.
Dépôt du site web de GitLab (8,9 Go au total) : le clonage standard a duré 6 minutes et 23 secondes. Le clonage optimisé a duré 6,49 secondes, soit une amélioration remarquable de 98,3 %, et la taille du répertoire .git a été réduite à 37 Mo. Le clonage Scalar a duré 33,60 secondes (soit une amélioration de 91,2 %), mais il a été 80,7 % plus lent qu'avec l'approche optimisée.
Ce benchmarking révèle des tendances claires : les dépôts volumineux enregistrent les améliorations les plus spectaculaires, les dépôts lourds en binaires bénéficient particulièrement du filtrage du checkout parcellaire (« sparse ») et l'approche d'optimisation personnalisée surpasse systématiquement à la fois les clonages Git standard et Scalar, quel que soit le type de dépôt.
Pour tirer pleinement parti de Git Much Faster, il est essentiel de choisir la technique adaptée à chaque cas de figure et à la tolérance au risque. Si vos opérations de développement nécessitent un accès à tout le dépôt, privilégiez le clonage Git standard. Pour les workflows à forte intensité de lecture nécessitant un accès rapide au code actuel, déployez le clonage optimisé. Pour les pipelines CI/CD où la rapidité est primordiale, le clonage optimisé offre le gain de performance le plus avantageux.
Pour commencer, téléchargez et exécutez simplement le script suivant :
curl -L https://gitlab.com/gitlab-accelerates-embedded/misc/git-much-faster/-/raw/master/git-much-faster.sh -o ./git-much-faster.sh
# For benchmarking
bash ./git-much-faster.sh --methods=optimized,standard --repo=https://github.com/your-org/your-repo.git
Dans le cadre de tests effectués dans un environnement de production, le projet Git Much Faster inclut une infrastructure Terraform complète pour le déploiement sur AWS, ce qui élimine les variables qui faussent les résultats des tests en environnement local.
Les clonages optimisés nécessitent une attention particulière quant à leurs limites applicables. Les clonages superficiels (« shallow ») empêchent l'accès aux commits historiques, ce qui limite certaines opérations telles que git log sur l'historique des fichiers. Pour les équipes qui adoptent ces optimisations, il est recommandé de créer des configurations spécifiques, adaptées à une utilisation à fort volume. Par exemple, un développeur peut effectuer un clonage optimisé puis, si nécessaire, le convertir en clonage complet via git fetch --unshallow. De même, si un job CI nécessite l'accès à l'historique complet des commits (comme pour GitVersion), disposer de l'historique complet peut être nécessaire, mais un checkout pas forcément.
Git Much Faster s'avère particulièrement bénéfique dans les situations suivantes. Le développement de systèmes embarqués dont les projets stockent historiquement les fichiers de design de micrologiciels et de matériel compilés directement dans le contrôle de version. Ces dépôts contiennent souvent des flux binaires FPGA, des schémas de circuits imprimés ainsi que des distributions SDK de fournisseurs dont la taille peut atteindre plusieurs dizaines de gigaoctets. Les processus de compilation nécessitent fréquemment de cloner des dizaines de dépôts externes, ce qui multiplie l'impact sur les performances.
Les monorepos d'entreprise rencontrent des contraintes de performances lors des opérations Git, à mesure que les dépôts regroupent plusieurs projets et de très nombreuses données historiques. Les projets multimédias et riches en ressources font face à de nombreuses problématiques, comme déjà mentionné plus haut : les applications web accumulent des ressources marketing au fil des ans, tandis que le développement de jeux vidéo doit gérer d'énormes modèles 3D et fichiers audio qui font grimper la taille des dépôts au-delà de 100 Go. D'autres cas d'utilisation sont présentés directement dans le projet Git Much Faster.
Les pipelines CI/CD constituent le cas de figure le plus critique : chaque job CI basé sur un conteneur nécessite un nouveau clonage du dépôt. Lorsque cette opération prend entre 20 et 90 minutes, le workflow complet de développement devient impraticable.
Enfin, certains membres d'équipes de développement géographiquement dispersées peuvent faire face à des performances réseau extrêmement limitées ou très variables. L'optimisation du clonage Git contribue à réduire radicalement la taille des transferts.
L'optimisation du clonage Git constitue une véritable opportunité de transformation qui offre des améliorations mesurables : jusqu'à 93 % de réduction du temps de clonage et 98 % d'économie d'espace disque utilisé. Celles-ci changent profondément la façon dont les équipes de développement interagissent avec les codes sources.
L'idée clé est que le comportement conservateur par défaut de Git ne permet pas de bénéficier de performances optimales. En identifiant les goulots d'étranglement spécifiques (inefficacité des transferts réseau, compression gourmande en CPU, téléchargements de données superflues), les équipes de développement peuvent mettre en œuvre des optimisations ciblées qui produisent des résultats exceptionnels et transformateurs.
Prêt à transformer vos workflows Git ?
Consultez la documentation disponible dans le dépôt Git Much Faster, puis exécutez des benchmarks sur vos plus grands dépôts. Commencez par l'optimisation en lecture seule dans les pipelines CI/CD où les gains sont immédiats et les risques limités. À mesure que votre équipe gagne en confiance, étendez progressivement ces optimisation aux workflows de développement en vous appuyant sur les résultats mesurés.
L'avenir de l'optimisation des performances Git est ouvert, mais les principes de base restent pertinents : éliminer le travail inutile, optimiser les goulots d'étranglement, mesurer les résultats de manière rigoureuse. Les équipes qui maîtrisent ces concepts dès aujourd'hui seront en mesure de tirer parti de toutes les améliorations à venir dans l'écosystème Git.
→ Essayez GitLab Ultimate et GitLab Duo Enterprise gratuitement.