Travailler avec de grands dépôts

Effectué

Git est un excellent système de gestion de version largement adopté et recommandé, mais vous devez prendre quelques précautions quand vous utilisez de grands dépôts.

Bien qu’une copie locale des dépôts dans un système de gestion de versions distribué soit fonctionnelle, cela peut poser un problème de taille quand de grands dépôts sont en place.

Par exemple, Microsoft a découvert ce problème lors de la migration d’un dépôt de plus de 300 Go de données d’un système interne vers Git.

Pourquoi les dépôts deviennent grands

Deux causes principales sont à l’origine des grands dépôts :

  • Historique long
  • Grands fichiers binaires

Clone superficiel

Si les développeurs n’ont pas besoin de tout l’historique disponible dans leurs dépôts locaux, une bonne solution consiste à implémenter un clone superficiel.

Il permet d’économiser à la fois de l’espace sur les systèmes de développement locaux et le temps nécessaire à la synchronisation.

Vous pouvez spécifier la profondeur du clone que vous souhaitez exécuter :

git clone --depth [depth] [clone-url]

Vous pouvez également réduire la taille des clones en filtrant les branches ou en clonant une seule branche.

VFS pour git

VFS pour Git vous aide à gérer de larges référentiels. Il a besoin d’un client Git LFS.

Les commandes Git classiques ne sont pas affectées, mais Git LFS fonctionne avec le système de fichiers standard pour télécharger les fichiers nécessaires en arrière-plan lorsque vous avez besoin de fichiers du serveur.

Le client Git LFS a été publié en open source. Le protocole est simple avec quatre points de terminaison qui s’apparentent aux points de terminaison REST.

Pour plus d’informations sur les grands dépôts, consultez : Utilisation de grands fichiers et Système de fichiers virtuel pour Git : activer Git à l’échelle de l’entreprise.

Scalaire

Capture d’écran de l’icône scalaire.

Scalar est une application .NET Core disponible pour Windows et macOS. Elle contient des outils et des extensions pour Git afin de permettre aux très grands dépôts d’optimiser les performances de votre commande Git. Microsoft l’utilise pour les dépôts Windows et Office.

Si Azure Repos héberge votre dépôt, vous pouvez cloner un dépôt en utilisant le protocole GVFS.

Il permet d’activer certaines fonctionnalités Git avancées, comme :

  • Clonage partiel : réduit le temps d’obtention d’un dépôt de travail en ne téléchargeant pas tous les objets Git immédiatement.
  • Prérécupération en arrière-plan : télécharge les données d’objet Git de tous les dépôts distants toutes les heures, ce qui réduit la durée des appels de récupération Git de premier plan.
  • Extraction rare : limite la taille de votre répertoire de travail.
  • Moniteur de système de fichiers : effectue le suivi des fichiers récemment modifiés et évite à Git d’analyser l’ensemble de l’arborescence de travail.
  • Graphe de commit : accélère le chemin de commit et les calculs d’accessibilité, ce qui accélère les commandes de type git log.
  • Index multipack : active les recherches rapides d’objets dans de nombreux fichiers pack.
  • Réempaquetage incrémentiel : réempaquète les données Git empaquetées en moins de fichiers pack sans perturber les commandes simultanées en utilisant l’index multipack.

Notes

Nous mettons à jour la liste des fonctionnalités que Scalar configure automatiquement chaque fois qu’une nouvelle version Git est publiée.

Pour plus d'informations, consultez les pages suivantes :