migration de TFVC vers Git du code d’un projet Azure DevOps

Migration d’un projet Azure DevOps de TFVC vers Git

24 Août 2021

Azure DevOps, successeur de Team Foundation Server (TFS), propose toujours les deux systèmes de contrôle de version : Team Foundation Version Control (TFVC) et Git.

Pour faire simple, TFVC est le vieux système, très probablement amené à disparaître, Git est le nouveau, destiné à rester seul en piste.

Bien sûr, la grande question est « quand TFVC va-t-il disparaître ? ». Et le drame, c’est que personne n’en sait rien…

Dans cet article, nous allons voir comment faire pour migrer un projet du système TFVC vers le système Git. C’est très facile !! Comme souvent avec Azure DevOps et la myriade de fonctionnalités qu’il contient, le tout est de savoir où se trouve la fonctionnalité désirée.

Les captures d’écran en anglais sont issues de Azure DevOps Services. Si vous hésitez entre Azure DevOps Services et Azure DevOps Server, voici 5 éléments pour choisir.

Pourquoi migrer un projet de TFVC vers Git ?

Au-delà de la quasi-certitude que TFVC va disparaître, plusieurs raisons peuvent vous pousser à envisager la migration d’anciens projets TFVC vers un système de contrôle de code-source Git.

  • Git est plus moderne. D’ailleurs les jeunes développeurs ne connaissent que Git et rechignent parfois à travailler sur des projets TFVC.
  • Git est multi-technologies et multi-environnements. Même s’il est tout à fait possible d’archiver du code Java en TFVC dans un projet Azure DevOps avec le plugin « Team Explorer » dans Eclipse, TFVC reste fortement lié à l’environnement Microsoft. Développer en Xcode par exemple ne se fera qu’avec Git.
  • Git est un système distribué. Chaque développeur dispose d’une copie complète du référentiel et n’a donc pas besoin d’être connecté en permanence au serveur.

Mais l’argument ultime et incontestable, c’est la gestion des branches !

Avec TFVC, c’est lourd, très lourd… puisque tout se passe directement sur le référentiel central sur le serveur.

Si vous souhaitez (et c’est recommandé) gérer les développements selon un modèle de branches comme Git flow, comme ci-dessous :

Figure 1 - modèle Git flow

gestion des développements et des environnements avec Git flow

Alors Git est incontournable pour votre projet Azure DevOps !

Deux systèmes de contrôle de version

TFVC et Git permettent tous les deux le contrôle des versions et des sources.

On retrouve comme fonctionnalités communes :

  • Extraction d’un fichier
  • Archivage d’une nouvelle version d’un fichier et historisation de la version précédente
  • Retour à une version antérieure
  • Gestion des branches
  • Gestion de tout type de fichier
  • Possibilité pour plusieurs développeurs de travailler simultanément sur le même fichier
  • Gestion des conflits lors des fusions
  • Comparaison de deux versions d’un même fichier
  • Historique des fichiers
  • Etc, etc…

Voyons maintenant les différences.

Team Foundation Version Control

TFVC est un système de contrôle centralisé

  • Les membres de l’équipe disposent uniquement d’une version des fichiers sur leur machine locale
  • Tout l’historique se trouve sur le serveur
  • Les branches sont basées sur des chemins et créées sur le serveur
  • On peut modifier le commentaire ou ajouter une étiquette après l’archivage validé par le serveur
  • Système historique de Team Foundation Server et de Visual Studio Team System

Pour connaître les versions successives de TFS et Azure DevOps, voir l’article TFS/VSTS/azure DevOps : comment s’y retrouver ?

Figure 2 - Projet TFVC avec Team Explorer

Team Explorer connecté à un projet TFVC

Figure 3 - Projet TFVC avec Azure DevOps

Projet TFVC dans l’interface web de Azure DevOps

Git

Git est un système de contrôle open source et réparti

  • Chaque membre dispose d’une copie (clone) du référentiel complet sur sa machine locale
  • Les modifications sont validées localement et l’historique maintenu localement sans besoin de connexion réseau
  • Synchronisation avec le référentiel central
  • Largement utilisé par des produits open source et d’autres IDE, comme XCode
  • Intégré dans TFS depuis la version TFS 2013

Figure 4 - projet Git avec Team Explorer

Team Explorer connecté à un projet Git

Figure 5 - projet Git avec Azure DevOps

Projet Git dans l’interface web de Azure DevOps

Convertir TFVC vers Git

L’opération est très facile car il existe un outil de migration intégré à Azure DevOps. Elle consiste à créer un nouveau Repo Git en important dedans le Repo TFVC.

Voyons comment procéder…

Nous partons donc du projet TFVC que l’on identifie car il n’y a que trois entrées (Files, Changesets, Shelvesets) sous le menu Repos :

Figure 6 - Projet TFVC à migrer vers Git

Projet TFVC à migrer vers Git dans Azure DevOps

Comme tout est question de Repository, nous allons dans le menu qui gère tous les Repos d’un projet. Comme indiqué sur la figure ci-dessous :

Figure 7 - Importation d'un Repo Git

Importation d’un Repo Git dans un projet Azure DevOps

En cliquant sur « Import repository », nous accédons à la fenêtre d’importation. Par défaut, le type de Repo est positionné sur Git :

Figure 8 - choix du type de Repo à importer

Choix du type de Repo à importer dans un projet Azure DevOps

Or, ce qu’on veut, c’est importer notre Repo TFVC existant pour le migrer vers un Repo Git. En choisissant TFVC comme type de Repo, les choses se précisent :

Figure 9 - import d'un Repo TFVC

Migrer de TFVC vers Git dans un projet Azure DevOps

Ne reste plus qu’à spécifier les options voulues, notamment la migration de l’historique du code, en précisant une durée en nombre de jours, et, bien sûr, en indiquant un nom pour le Repo Git qui sera créé automatiquement suite à la migration :

Figure 10 - options de migration

Options d’historique et de nom pour migrer de TFVC vers Git dans un projet Azure DevOps

Figure 11 - migration de TFVC vers Git en cours...

Migration de TFVC vers Git en cours de process

Sitôt la migration terminée, nous constatons que la liste des Repos de notre projet Azure DevOps contient toujours le Repo TFVC mais aussi maintenant un Repo Git :

Figure 12 - liste des Repos TFVC ou Git

Liste des Repos dans un projet Azure DevOps

Il suffit alors de sélectionner le Repo Git et de ne plus se préoccuper du Repo TFVC. L’interface Web du projet dans le menu Repo a changé et indique maintenant 6 entrées correspondant à un système Git !

Figure 13 - nouveau Repo Git sur un projet TFVC

Après migration, nouveau Repo Git dans le projet Azure DevOps

Est-ce urgent de passer de TFVC vers Git ?

En août 2021, la fin de TFVC n’est pas encore programmée. Même si tout le monde pense qu’elle est inéluctable.

On peut donc tout à fait conserver les projets en TFVC pour l’instant. Néanmoins, les nouveaux projets seront plutôt créés avec le système Git. C’est le choix que fait la quasi-totalité des organisations.

Le jour où vous souhaitez migrer un projet de TFVC vers Git, cet article vous donne toutes les clés pour le faire rapidement et facilement.

Bonne migration !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *