Loupe

[TFS] Migrer de Team Foundation Version Control vers GIT

TFS (ou Visual Studio Online) offre depuis bientôt 2 ans la possibilité de gérer ses sources via GIT et non plus seulement via Team Foundation Version Control (TFVC). Chacun possède ses avantages et ses inconvénients (ce qui fera suite à un prochain billet), mais force est à constater que GIT séduit et converti de plus en plus d’équipe actuellement sous TFVC.

Ce billet a pour but d’exposer la démarche pour migrer de TFVC à GIT avec le minimum de perte (sur le même serveur TFS ou non).

Migration des Work Items

Pour cette partie, une solution simple et viable reste TFS Integration Tools (accompagné de SQL Server (Express) et Team Explorer)

Même si l’outil ne supporte pas officiellement TFS 2013, il reste pleinement fonctionnel pour cette dernière version (et par la même occasion pour Visual Studio Online).

Côté configuration, rien de spécial :

  • Créer une nouvelle configuration basée sur le template WorkItemTracking

image

  • Choisir le provider adéquate pour le serveur source et le provider TFS11 pour le serveur cible

image

  • Si les 2 projets sont basés sur le même Process Template (plus exactement si ils possèdent la même logique au niveau des Work Items (mêmes types, mêmes champs, même Workflow, même hiérarchie)), il suffit de lancer la migration, TFS Integration Tools sera faire la concordance tout seul 
    • Cliquer sur Save To DataBase puis Start

Dans le cas contraire, quelques mappings sont à réaliser, voir ici pour la procédure 

La migration est relativement longue en fonction de la quantité de Work Item à traiter.

Migration du contrôle de source

Le but sera de migrer les sources tout en gardant l’historique.

Dans un premier temps il faudra se munir de Git-TF (ou GIT-TFS). Le plus simple est de passer par Chocolatey (ou OneGet, ce qui revient au même pour l’instant) :

#Chocolatey
choco install Git-TF
#OneGet
Install-Package Git-TF

De nouvelles cmd-let sont disponibles permettant l’interaction entre GIT et TFS.

Place au script de Migration :

#répertoire temporaire pour la migration
$tempFolder = "D:\GitMigrationTemp"
#collection TFS source, on-premise ou VSO
$sourceCollection = "https://myvso.visualstudio.com/DefaultCollection"
#nom du projet source sous TFVC
$sourceProjectName = "MySourceProject"
#collection TFS cible, on-premise ou VSO
$targetCollection = "https://myvso.visualstudio.com/DefaultCollection"
#nom du projet cible sous GIT
$targetProjectName = "MyTargetProject"
 
$vc = "$/" + $sourceProjectName
$repo =  $targetCollection + "/_git/" + $targetProjectName
git-tf clone $sourceCollection $vc --deep $tempFolder
cd $tempFolder
git remote add origin $repo
git push -u origin --all

Attention, la migration est relativement longue.

Conclusion

Il reste tout de même à noter que cette migration entraine quelques pertes (plus ou moins importantes selon le contexte) :

  • Permission (à adapter),
  • Date des Work Items (adaptable via quelques scripts SQL pour du On-Premise, mais irrémédiable pour du Visual Studio Online),
  • Reporting,
  • Build (à adapter)

Malgré cela, le plus gros est migré et très facilement Sourire

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus