Microsoft propose GVFS, un système de fichiers open source accélérant les opérations Git

Des fichiers déshydratés 80
En bref
image dediée
OS
Par
le lundi 06 février 2017 à 16:00
Vincent Hermann

Microsoft propose depuis ce week-end un système d’extension open source dédié aux dépôts Git. Nommé GVFS, il est proposé à la communauté et ambitionne d’accélérer très nettement certaines opérations en virtualisant les ressources.

GVFS, Git Virtual File System, est un projet de Microsoft sous licence MIT. Il est disponible depuis peu dans un dépôt Git, l’éditeur espérant fédérer une communauté de développeurs autour d’un objectif bien précis : rendre les opérations Git bien plus rapides sur les dépôts de projets contenant des millions de lignes de code.

La problématique des très gros projets

Microsoft articule ses explications autour d’un exemple emblématique : Windows. Le code source du système (on imagine que l’éditeur parle de la version 10) s’étale en effet sur pas moins de 3,5 millions de fichiers, contenant chacun un nombre indéfini de lignes de code. En tout, cette montagne de données fait son poids : la bagatelle de 270 Go.

Or, Microsoft indique que s’il apprécie particulièrement Git, le système de gestion de versions voit ses performances dégradées dans le cas de très gros projets. Toujours sur l’exemple de Windows, un « checkout » peut prendre ainsi jusqu’à 3 heures, un « clone » plus de 12 heures et même un simple « status » peut durer jusqu’à 10 minutes.

On notera que Gabriel Aul, qui dirigeait auparavant le programme de test Windows Insider, participe également au projet. Il indique dans un tweet que Microsoft transfère actuellement son SCM (Source Code Management), ce qui explique les travaux réalisés dans le même temps, l’éditeur souhaitait avant tout répondre à ses propres contraintes.

Un système de fichiers virtualisé

GVFS virtualise en fait le système de fichiers sous-jacent au dépôt. Il laisse apparaître tous les fichiers comme s’ils étaient bien là, mais ne les récupère en réalité que lorsqu’un utilisateur cherche à l’ouvrir pour la première fois. Un fonctionnement qui offre selon Microsoft plusieurs avantages, notamment l’absence de modification dans les environnements de développement et les différents outils de compilation.

Le principal, ce sont évidemment les performances de ce système quand il faut lancer des commandes Git. « clone » ne nécessiterait ainsi plus que quelques minutes au lieu d’une douzaine d’heures, un « checkout » environ 30 secondes au lieu de deux à trois heures, et un « status » quatre ou cinq secondes au lieu de dix minutes. L’éditeur insiste d’ailleurs : il ne s’agit que d’un premier jet, et il est possible de faire encore mieux.

Pour comprendre le fonctionnement de GVFS, il faut aborder le concept « d’hydratation ». On parle d’un fichier « hydraté » quand une coquille quasiment vide existant en mémoire est remplie avec des données réelles. L’évocation de ce fichier devient alors le fichier à proprement parler. Or, c’est là le mécanisme central de GVFS. Les opérations ne s’exécutent que sur des fichiers « hydratés », puisque les autres correspondent à des données qui n’ont pas été utilisées récemment.

Ne reste qu'à motiver la communauté autour du projet

Ce fonctionnement correspond selon Microsoft à l’utilisation faite de Git en général : « Dans un dépôt aussi imposant, aucun développeur ne compile l’arbre entier des sources. Au lieu de ça, ils téléchargent généralement les dernières modifications depuis la plus récente build et ne compilent alors qu’une petite partie des sources, liées à ce qu’ils ont modifié. Donc même s’il y a plus de trois millions de fichiers dans le dépôt, un développeur typique n’aura besoin que de télécharger et utiliser 50 000 à 100 000 de ces fichiers ».

Évidemment, il y a peu de chances que les développeurs aient des dépôts aussi vastes, mais le gain de temps peut être manifeste et le projet est sous licence MIT. Reste à voir si la communauté répondra présente. Tous ceux qui se penchent sur GVFS pourront se rendre sur le dépôt Git du projet, qui contient d’ailleurs toutes les instructions d’installation. Cette dernière passe par l’utilisation d’un pilote spécifique, qui demandera de désactiver momentanément BitLocker pour être mis en place.


chargement
Chargement des commentaires...