Tous les développeurs connaissent les utilitaires de gestion des sources et exécutables de leurs programmes, qui par le passé avaient pour nom CVS et SVN (Subversion), des utilitaires qui ont laissé pour plus de 12 millions d’entre eux, la place à Git, l’outil de Linus Torvalds, « Pape » de Linux, déposé bien entendu dans la plate-forme GitHub. Le problème est que Git n’est pas performant dès lors que les dépôts sont importants, difficulté pour laquelle Microsoft propose une solution, désignée GVFS (Git Virtual File System).

Des temps de traitement démesurés

Git pose donc un problème dès que le nombre de fichiers qui caractérise les dépôts, en même temps que les volumes, deviennent trop importants.

C’est ce qu’a fait remarquer Microsoft, grand adepte de l’utilitaire, qui indique qu’il n’est décidément pas fait pour l’un de ses dépôts de 270 GB, constitué de 3,5 millions de fichiers. Evidemment on n’est pas dans un mini-site Internet avec quelques pages HTML…

Et de préciser qu’avec de tels volumes les fonctions élémentaires de l’outil deviennent inutilisables.

Si vous voulez par exemple récupérer un dépôt existant, vous allez utiliser la commande clone, qui va recopier dans un nouveau répertoire la totalité des fichiers du dépôt initial de Git :

$ git clone git://github.com/lemarson/bibliotheque.git mabibliotheque

Ce qui d’après Microsoft et avec les volumes précédents, peut prendre plus de 12 heures.

De même un checkout qui est l’une des fonctions de base de Git et qui permet entre autre de revenir sur un état d’un fichier tel qu’il était avant le dernier commit, peut s’avérer extrêmement long, plusieurs heures parfois.  Voire un status, qui précise les différences qu’il y a à un moment donné entre les versions de travail et de « staging » du dépôt, peut également demander de longues minutes.

Entendons-nous bien, le problème ne se pose que si vous avez des dépôts importants à manipuler et à faire évoluer. Qui ne concernera donc que quelques usagers travaillant sur des projets particulièrement « touffus ».

En tout cas, pour ceux-là, Microsoft proposera une solution dite GVFS, qui virtualise le système de fichiers du dépôt de manière à vous donner le sentiment que vous avez accès à la totalité des fichiers alors qu’en réalité, c’est une façade, une illusion et qu’il ne charge réellement les fichiers que lorsque vous en avez effectivement besoin. C’est-à-dire lors de leur première ouverture.

De cette façon, même avec un très gros dépôt de plusieurs millions de fichiers, un checkout ne demandera que quelques dizaines de secondes et un status, moins de 10 secondes. C’est mieux.

Attention quand même, Microsoft précise que son GVFS est encore dans une phase de construction et qu’il ne faut pas compter dessus en production.

Le projet GVFS est lui-même déposé chez Github et vous avez tout le loisir d’analyser son code source, voire de proposer des solutions pour l’améliorer, sachant que comme la plupart des produits Open Source sur lesquels travaille Microsoft, tels que .NET Core 1.0 ou Visual Studio, il est placé sous la protection d’une licence MIT.

A noter enfin, qu’il existe d’autres solutions pour traiter de très gros dépôts Git, dont Git LFS (Large File System), un autre projet Open Source, qui a ses défenseurs, mais que Microsoft ne semble pas apprécier.