Et si migrer de TFVC à GIT était simple ?

Pourquoi migrer ?

Historiquement très bien implémenté dans les entreprises, Team Foundation Server (TFS) a habitué les équipes de développeurs à l’utilisation de Team Foundation Version Control (TFVC)

Sauf qu’aujourd’hui les développeurs sont formés et encouragés à utiliser GIT, une technologie plus adaptée aux gestions de projets enrichies aux méthodes AGILE. Il s’agit du système de-facto standard dans l’open-source et il a supplanté SubVersion il y a maintenant plusieurs années. Si vous avez besoin d’un petit rappel sur GIT, Thomas Ouvré a rédigé une excellente découverte sur le sujet, et s’il ne fallait en retenir que deux, voici les arguments à conserver :

  • L’utilisation des branches est bien plus rapide et engageante avec GIT qu’avec TFVC, mention spéciale à GIT-Flow
  • GIT a la préférence des éditeurs tiers d’outils, y compris de Microsoft qui encourage maintenant fortement son utilisation.

Bien que cela ne fût pas possible initialement, les projets d’équipe TFS supportent maintenant l’utilisation de dépôts TFVC et de dépôts GIT en simultané. La version SaaS de TFS, nommée Visual Studio Team Services (VSTS), met à disposition très régulièrement des fonctionnalités supplémentaires, soit pour refléter des actions disponibles avec TFVC, soit pour tirer profit des spécificités de GIT. Une cadence élevée qui met en valeur la volonté de Microsoft d’encourager la migration de l’un à l’autre et qui s’inscrit dans sa stratégie d’attirer les développeurs venant du monde de l’open-source.

Bref, GIT a le vent en poupe et l’apparition d’un compétiteur à la hauteur ne semble pas pour tout de suite.

La migration ça peut être très simple …

En effet, depuis Avril 2017 VSTS offre la possibilité d’exporter un dépôt TFVC vers un dépôt GIT. L’export est enfantin mais à deux conditions : l’historique des modifications est limité aux 180 derniers jours et il n’est possible d’exporter qu’une seule branche ! On peut imaginer deux raisons à ce choix. 

La première raison est d’ordre technique et pointe du doigt la différence fondamentale entre TFVC et GIT : on historise les versions des fichiers pour le premier, alors que l’on applique une suite de modifications de fichiers pour le second. Il faut donc pour chaque changeset TFVC comparer la version actuelle avec la version précédente sur tous les fichiers modifiés pour obtenir le changeset GIT correspondant. C’est un gros travail CPU et dans le cas de plusieurs branches, il est devient difficile de gérer les fusions de branches sans devoir mettre tout l’historique en mémoire pour pouvoir l’arpenter.

La seconde est plus pragmatique. S’il est possible de faire cohabiter un dépôt TFVC et un dépôt GIT dans un même projet TFS, il n’y a tout simplement plus besoin d’effectuer une migration totale. En effet, puisque le suivi des éléments de travail est conservé dans les deux dépôts, il est tout à fait possible de naviguer dans l’historique sans désagrément, le dépôt TFVC d’origine restant “en lecture seule”, au cas où.

... Sauf quand ça devient compliqué !

Il est néanmoins possible de migrer entièrement un dépôt TFVC grâce à l’utilitaire git-tfs. Cet utilitaire est très complet et permet de migrer l’entièreté de l’historique, branches et références aux éléments de travail compris. Cette opération n’est pas instantanée et peut même demander plusieurs dizaines de minutes voire une poignée d’heures. Cela dit, il ne s’agit pas d’une migration d’un seul tenant, le fonctionnement est plus proche d’une synchronisation. Il est tout à fait possible de redémarrer une synchronisation après chaque changeset, c’est d’ailleurs un scénario d’usage de git-tfs.

L’utilisation de git-tfs permet d’ailleurs de migrer plusieurs branches vers un même dépôt GIT, mais cela peut demander des interactions avec l’utilisateur. C’est bien là le seul inconvénient de cette solution : selon les situations tout n’est pas entièrement automatisé mais malgré la longueur de la procédure, ce n’est au final qu’un moment désagréable à passer.

Si vous souhaitez en apprendre plus sur l’utilisation de git-tfs, la documentation officielle fournit une bonne base de travail et après quelques essais vous pourrez même assurer des scénarios pratiques tels que la migration de nom d’utilisateur, le formatage des commentaires ou l’ajout de tags.

En fin de compte, VSTS permet de migrer de TFVC vers GIT très simplement si l’objectif est de, justement, changer de système de gestion de version. En revanche si votre équipe utilise TFS, souhaite assurer une synchronisation entre deux dépôts TFVC et GIT ou si elle souhaite réimporter l’ensemble de l’historique de TFVC vers un dépôt GIT tier (Github, BitBucket, on-premise etc…) l’opération devient sujette à expérimentation et peut prendre une petite journée, selon la taille du dépôt initial. 

En ce qui me concerne j’ai déjà réalisé avec succès une poignée de migration de dépôts pour nos clients et les avantages l’emportent sur les inconvénients malgré des situations très variées. Vous n’avez vraiment plus d’excuses pour retarder l’adoption de GIT dans votre équipe !

Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus