J'ai récemment eu vraiment marre de TFS. J'ai entendu dire qu'il y avait une lumière au bout du tunnel. Apparemment, je peux utiliser git-tf ou git-tfs et traiter mon code comme s'il était géré par git, mais être capable de pousser/tirer vers/depuis un serveur TFS central.
Ma question principale est que je ne sais pas laquelle utiliser. Il y a git-tf qui est officiellement supporté par Microsoft, et il y a git-tfs qui existe depuis bien plus longtemps. Quelles sont les différences entre celles-ci et lesquelles dois-je essayer en premier?
Avertissement: I a commencé le git-tf
project et bien que le projet soit désormais entre de très bonnes mains sans moi en tant que contributeur fréquent, vous devez absolument considérer mes opinions à ce sujet fortement biaisé. (Et, en supposant que vous êtes sous Windows, peut-être inattendu.)
Il existe deux différences fondamentales entre les deux outils:
git-tfs
a été conçu pour les utilisateurs de Windows et écrit au-dessus du SDK .NET TFS. Le SDK TFS ne fonctionnera pas sous Mono, donc cela fait git-tfs
ne convient pas pour une utilisation multiplateforme.
git-tf
a été conçu pour les utilisateurs multiplateformes et écrit sur le dessus du Java SDK TFS. Ainsi, il fonctionnera partout où il est pris en charge par le Java SDK SDK (Windows, Mac, Linux, AIX, HP-UX, Solaris, etc ...) git-tf
a été explicitement créé pour permettre aux utilisateurs Xcode d'accéder à TFS.
Sous Windows, bien sûr, vous pouvez utiliser l'un ou l'autre. Je ne vais pas nécessairement dire que l'un est meilleur que l'autre. Mais je dirai:
Ma plus grande plainte concernant git-tfs
est que cela ne fonctionnera pas sous Mac OS. S'il y avait un moyen de faire git-tfs
multiplateforme, puis git-tf
n'existerait certainement pas.
git-tfs
est plus rapide dans certains cas que git-tf
. La performance n'était pas pas notre priorité dans les premières révisions, l'exactitude était.
Car git-tf
possède une large matrice de support de plate-forme, ce qui signifie que sa fonctionnalité est nécessairement limitée. Par exemple, il n'y a pas UI. git-tfs
, d'autre part, a une commande checkintool
qui ouvrira la boîte de dialogue normale TFS Checkin. Cela peut être extrêmement utile pour visualiser vos modifications. (Si je me souviens bien, vous pouvez ouvrir un diff visuel approprié à partir de là, etc.)
git-tf
fonctionne en remplissant directement le référentiel git, en téléchargeant les objets TFS directement dans la base de données d'objets git. git-tfs
fonctionne en créant un mappage de dossier de travail TFS dans un dossier caché, puis en remplissant le référentiel git à partir de cela. Il y a une pénalité de disque ici, donc si vous avez des référentiels supergineux, vous pourriez le ressentir.
git-tfs
peut essayer de mapper vos branches TFS à vos branches git. Beaucoup de gens verront cela comme positif pour git-tfs
, bien que je ne le fasse pas: le modèle de branchement de git (au niveau du référentiel) et le modèle de branchement de TFS (représentés comme des dossiers dans le référentiel) sont si radicalement différents qu'ils causent des problèmes dans tout sauf les workflows les plus simplistes. Mais votre kilométrage peut varier.
git-tfs
est activement développé par une communauté. git-tf
n'a pas eu l'adoption de la communauté.
Je ne veux pas donner l'impression que je dis git-tf
est mauvais. Ce n'est pas. Je pense que c'est plutôt bien. Mais ce n'est peut-être pas votre meilleur choix.
Mise à jour: git-tf
a atteint la fin de sa durée de vie . Il n'est plus maintenu ni pris en charge par Microsoft. Nous recommandons git-tfs
si vous voulez une solution bidirectionnelle TFS <-> git.
Avertissement: je suis développeur sur le projet git-tfs
Edit: git-tf n'est plus maintenu ...
Edit: git-tfs n'est plus activement mainten plus non plus.
Et maintenant, il existe un très bon support de la branche TFS dans git-tfs (récupérer les branches existantes, créer des branches, fusionner des branches plus facilement qu'avec TFS, ... en utilisant la commande branch
).
Voir:
git-tfs est également peut-être le seul outil qui vous permet de migrer de TFS (VC) vers TFS (Git), de gérer des éléments de travail si nécessaire, ou un simple référentiel git.
Et quelques autres bonnes fonctionnalités ...
À tous ceux qui trouvent ce fil:
Git-TF
a été officiellement interrompu après n'avoir pas été mis à jour après 2013 et suggère désormais explicitement Git-TFS
comme alternative.
Fin de vie de Git-TF
Git-TF a atteint sa fin de vie. Il n'aura plus de mises à jour et ne sera plus pris en charge par Microsoft.
Microsoft Visual Studio Team Services fournit désormais un outil d'importation simple pour importer un référentiel Team Foundation Version Control dans un référentiel Git. Nous vous recommandons de l'utiliser pour convertir les référentiels TFVC en Git.
Si vous avez besoin de conversions plus avancées ou si vous souhaitez créer un pont entre un référentiel TFVC et travailler avec un référentiel Git local, nous vous recommandons le projet git-tfs .
Git-TF ne doit pas être utilisé pour de nouveaux projets, mais il restera dans l'archive Codeplex pour les utilisateurs hérités.
(Section ajoutée sur le projet page codeplex en avril 2017 par Edward Thomson, son initiateur et auteur de la réponse acceptée)
Git-TFS
semble être activement maintenu: https://github.com/git-tfs/git-tfs/commits/master