Comment migrer tfvc vers Git, y compris l'historique

Sep 18 2020

Nous prévoyons de migrer de tfvc vers le contrôle de version Git.

Nous avons quelques Go de code et des milliers de changesets. J'ai lu quelques articles et parcouru la documentation Microsoft et j'ai trouvé 2 options.

  1. astuce migration - où je peux utiliser l'outil intégré Azure Devops "Import Repository". Il a des limitations telles que le référentiel importé devrait être de 1 Go et nous pouvons obtenir 180 jours d'historique.

  2. Git TFS - Cela répond à mes besoins. Mais je ne sais pas s'il peut migrer tout le code et tout l'historique.

Comment puis-je atteindre cet objectif? Et y a-t-il d'autres options que celle-ci?

Réponses

1 DanCsharpster Sep 18 2020 at 23:01

Les outils git-tfs et git-tf fonctionnent plutôt bien. Git-tfs a une bonne documentation dans le readme. Gardez simplement à l'esprit comment cela fonctionne. TFS est assez limité. Ce qui se passe, c'est que vous extrairez tout l'historique tfs et créerez un référentiel git local à partir de celui-ci. De là, vous pouvez placer n'importe quelle télécommande git de votre choix. Il devrait être en mesure de conserver parfaitement l'historique et les noms des auteurs. Si vous passez à git dans Azure DevOps, il existe un outil de migration qui peut vous aider.

Aussi, gardez à l' esprit que c'est une question populaire et a été demandé avant .

1 Philippe Sep 19 2020 at 14:41

GIT-TFS - Cela répond à mes besoins. Mais je ne sais pas s'il peut migrer tout le code et tout l'historique.

Parce que la façon dont TFVC et Git stockent les données est très différente, aucun outil n'est parfait. Vous devrez donc essayer beaucoup de choses et trouver la manière qui correspond le mieux à vos besoins. Mais je suis sûr qu'aucun ne sera parfait.

Ici, vos 2 options sont git-tfs et git-tf.

Mais avec quelques avantages pour git-tfs. Voir:

Quelle est la différence entre git-tf et git-tfs?

Comment puis-je atteindre cet objectif?

Je ne peux pas en dire plus que ce que j'ai déjà mis dans cette documentation: https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/migrate_tfs_to_git.md

Mais parce que ce genre de migration n'est pas un processus parfait, vous devez faire beaucoup d'essais et d' erreurs jusqu'à trouver la bonne façon pour vous de le faire. Commencez donc par un petit historique car la récupération des données de TFVC est assez lente 😕

Et y a-t-il d'autres options que celle-ci?

Il y en a mais aucune n'est une solution parfaite (mais il y a toujours des solutions à essayer)

https://github.com/viceroypenguin/tfs-fast-export https://github.com/kunom/tfsdb-fast-export

Si vous cherchez bien, vous trouverez d'autres solutions personnalisées qui ont fonctionné 1 ou 2 fois pour une migration spécifique ...

astuce migration - où je peux utiliser l'outil intégré Azure Devops "Import Repository". Il a des limitations telles que le référentiel importé devrait être de 1 Go et nous pouvons obtenir 180 jours d'historique.

Plus votre historique est grand, moins il est logique de migrer TOUTE l'histoire. Il serait donc parfaitement logique de migrer quelques mois seulement et de conserver l'historique TFVC sous forme d'archive.

Et vous pouvez également essayer de répliquer cette `` migration de pointe '' avec git-tfs ou git-tf en sélectionnant simplement à partir de quel ensemble de modifications vous souhaitez démarrer votre migration.

Lorsque l'historique TFVC est très étrange et que vous n'en avez pas vraiment besoin, un dernier recours peut être de commencer à partir de l'extraction du dernier ensemble de modifications. C'est ce que conseille Microsoft (même si je ne suis pas totalement d'accord là-dessus).

Le succès d'une telle migration est d'être flexible, d'accepter qu'elle ne sera sûrement pas parfaite (principalement en raison de la manière insensée dont TFVC stocke les données et vous permet de faire des choses étranges) et de trouver le bon moyen de passer à autre chose!