Git vs Team Foundation Server

J’ai présenté Git à mon équipe de développement et tout le monde le déteste, sauf moi. Ils veulent le remplacer par Team Foundation Server. J’ai l’impression que c’est un énorme pas en arrière, même si je ne connais pas très bien TFS. Une personne expérimentée peut-elle comparer le support de twigment sur TFS et Git? Aussi, en général, quels sont les avantages et les inconvénients de TFS? Est-ce que je vais le détester après avoir utilisé Git pendant quelques années?

Je pense, la déclaration

tout le monde le déteste sauf moi

rend toute discussion plus longue: lorsque vous continuez à utiliser Git, ils vous blâmeront si quelque chose ne va pas.

En dehors de cela, Git a deux avantages par rapport à un VCS centralisé que j’apprécie le plus (comme décrit en partie par Rob Sobers ):

  • sauvegarde automatique de l’ensemble du repository: chaque fois que quelqu’un tire du repository central, il / elle obtient un historique complet des modifications. Quand un repository est perdu: ne vous inquiétez pas, prenez un de ceux qui sont présents sur chaque poste de travail.
  • access repo hors ligne: quand je travaille chez moi (ou dans un avion ou un train), je peux voir l’historique complet du projet, chaque checkin, sans démarrer ma connexion VPN pour travailler et travailler comme si j’étais au travail : checkin, checkout, twig, n’importe quoi.

Mais comme je l’ai dit: je pense que vous vous battez pour une bataille perdue: quand tout le monde déteste Git, n’utilisez pas Git. Cela pourrait vous aider davantage à savoir pourquoi ils détestent Git au lieu de les essayer pour les convaincre.

S’ils ne le veulent tout simplement pas parce que c’est nouveau pour eux et qu’ils ne sont pas disposés à apprendre quelque chose de nouveau: êtes-vous sûr que vous ferez un développement réussi avec ce personnel?

Est-ce que chaque personne déteste vraiment Git ou est-elle influencée par certains leaders d’opinion? Trouvez les leaders et demandez-leur quel est le problème. Convainquez-les et vous convaincrez le rest de l’équipe.

Si vous ne pouvez pas convaincre les dirigeants: oubliez d’utiliser Git, prenez le TFS. Vous facilitera la vie

La principale différence entre les deux systèmes est que TFS est un système de contrôle de version centralisé et que Git est un système de contrôle de version dissortingbué.

Avec TFS, les référentiels sont stockés sur un serveur central et les développeurs extraient une copie de travail, qui est un instantané du code à un moment donné. Avec Git, les développeurs clonent l’ intégralité du référentiel sur leurs machines, y compris tout l’historique.

L’avantage d’avoir un référentiel complet sur les machines de votre développeur est la redondance au cas où le serveur mourrait. Un autre avantage est que vous pouvez déplacer votre copie de travail entre les révisions sans jamais parler au serveur, ce qui peut être utile si le serveur est en panne ou simplement inaccessible.

Pour moi, le vrai avantage est que vous pouvez commettre des modifications sur votre repository local sans jamais parler au serveur ou infliger des modifications potentiellement instables à votre équipe (c.-à-d. Casser la construction).

Par exemple, si je travaille sur une grande fonctionnalité, cela peut me prendre une semaine pour le coder et le tester complètement. Je ne veux pas enregistrer de code instable au milieu de la semaine et casser la construction, mais que se passe-t-il si je suis proche de la fin de la semaine et que je mets accidentellement la totalité de ma copie de travail? Si je n’ai pas commis tout le temps, je risque de perdre mon travail. Ce n’est pas un contrôle de version efficace, et TFS est sensible à cela.

Avec DVCS, je peux constamment m’engager sans me soucier de casser la version, car je commets mes modifications localement . Dans TFS et autres systèmes centralisés, il n’y a pas de concept d’enregistrement local.

Je ne me suis même pas rendu compte de l’amélioration de la twig et de la fusion dans le DVCS, mais vous pouvez trouver des tonnes d’explications ici sur SO ou via Google. Je peux vous dire par expérience que le twigment et la fusion dans TFS ne sont pas bons.

Si l’argument de TFS dans votre organisation est qu’il fonctionne mieux sous Windows que Git, je suggère Mercurial, qui fonctionne très bien sous Windows: il y a une intégration avec Windows Explorer (TortoiseHg) et Visual Studio (VisualHg).

Les gens doivent déposer le pistolet, s’éloigner du rebord et réfléchir pendant une minute. Il s’avère qu’il ya des avantages objectives, concrets et indéniables pour le DVCS qui feront une énorme différence dans la productivité d’une équipe.

Tout se résume à la ramification et à la fusion.

Avant le DVCS, le principe de base était “Priez Dieu que vous n’ayez pas à vous lancer dans la création de succursales et la fusion. Et si vous le faites, au moins le supplie de le laisser très simple.”

Maintenant, avec le DVCS, le twigment ( et la fusion ) est tellement amélioré que le principe de base est le suivant: “Faites-le en un tour de main. Cela vous apportera beaucoup d’avantages et ne vous causera aucun problème.”

Et ceci est un booster de productivité énorme pour toute équipe.

Le problème est que, pour que les gens comprennent ce que je viens de dire et soient convaincus que c’est vrai, ils doivent d’abord investir dans une courbe d’apprentissage. Ils n’ont pas à apprendre Git ou tout autre DVCS lui-même … ils ont juste besoin d’apprendre comment Git fait des twigments et des fusions. Lisez et relisez certains articles et articles de blog, en prenant le temps et en les parcourant jusqu’à ce que vous les voyiez. Cela pourrait prendre la meilleure partie de 2 ou 3 jours complets.

Mais une fois que vous voyez cela, vous ne penserez même pas à choisir un non-DVCS. Parce qu’il y a vraiment des avantages clairs, objectives et concrets pour le DVCS, et les plus gros gains sont dans le domaine de la création de succursales et de la fusion.

Original : @Rob, TFS a quelque chose qui s’appelle ” Shelving “, qui répond à vos préoccupations concernant l’engagement de travaux en cours sans que cela n’affecte la version officielle. Je me rends compte que le contrôle de la version centrale est un obstacle, mais en ce qui concerne TFS, la vérification de votre code dans l’étagère peut être considérée comme une force b / c alors que le serveur central a une copie de votre travail en cours dans l’événement rare. votre machine locale tombe en panne ou est perdue / volée ou vous devez changer de vitesse rapidement. Ce que je veux dire, c’est que les TFS devraient recevoir des éloges dans ce domaine. De plus, les twigments et les fusions dans TFS2010 ont été améliorés par rapport aux versions précédentes, et la version à laquelle vous faites référence lorsque vous dites “que les twigments et la fusion dans TFS ne sont pas bons” ne sont pas clairs. Disclaimer: Je suis un utilisateur modéré de TFS2010.

Edit Dec-5-2011 : Pour l’OP, une chose qui me dérange au sujet de TFS, c’est qu’il insiste pour que tous vos fichiers locaux soient “en lecture seule” lorsque vous ne les utilisez pas. Si vous voulez apporter une modification, le stream est que vous devez “extraire” le fichier, ce qui efface simplement l’atsortingbut readonly du fichier pour que TFS sache le garder à l’oeil. C’est un workflow peu pratique. La façon dont je préférerais que cela fonctionne est celle de détecter automatiquement si j’ai apporté un changement et de ne pas me soucier du tout des atsortingbuts de fichier. De cette façon, je peux modifier le fichier dans Visual Studio, Notepad ou avec l’outil de votre choix. Le système de contrôle de version doit être aussi transparent que possible à cet égard. Il y a une extension Windows Explorer ( TFS PowerTools ) qui vous permet de travailler avec vos fichiers dans l’Explorateur Windows, mais cela ne simplifie pas beaucoup le stream de travail.

En plus de tout ce qui a été dit (

https://stackoverflow.com/a/4416666/172109

https://stackoverflow.com/a/4894099/172109

https://stackoverflow.com/a/4415234/172109

), ce qui est correct, TFS n’est pas seulement un VCS. Une fonctionnalité majeure fournie par TFS est la fonctionnalité de suivi des bogues intégrée en mode natif. Les mutations sont liées à des problèmes et peuvent être suivies. Diverses stratégies pour les check-ins sont sockets en charge, ainsi que l’intégration avec le domaine Windows, ce que font les personnes qui exécutent TFS. L’interface graphique étroitement intégrée avec Visual Studio est un autre argument de vente, qui attire moins que la moyenne des développeurs de souris et de clics et son responsable.

Par conséquent, comparer Git à TFS n’est pas une question à poser. Correct, bien que peu pratique, la question est de comparer Git avec la fonctionnalité VCS de TFS. Git souffle alors TFS hors de l’eau. Cependant, toute équipe sérieuse a besoin d’autres outils et c’est là que TFS fournit une destination unique.

Si votre équipe utilise TFS et que vous souhaitez utiliser Git, vous pouvez envisager un pont “git to tfs”. Essentiellement, vous travaillez quotidiennement avec Git sur votre ordinateur, puis, lorsque vous souhaitez pousser vos modifications, vous les transmettez au serveur TFS.

Il y a un couple là-bas (sur github). J’en ai utilisé un à ma dernière place (avec un autre développeur) avec un certain succès. Voir:

https://github.com/spraints/git-tfs

https://github.com/git-tfs/git-tfs

Après quelques recherches entre les contre et le contre, la société à laquelle j’ai été associé a également décidé de passer à TFS. Ce n’est pas parce que GIT n’est pas un bon système de contrôle de version, mais surtout pour la solution ALM entièrement intégrée fournie par TFS. Si seule la fonctionnalité de contrôle de version était importante, le choix aurait probablement été GIT. La courbe d’apprentissage abrupte du GIT pour les développeurs réguliers ne peut cependant pas être sous-estimée.

Voir une explication détaillée dans mon article sur le blog TFS en tant que véritable plate-forme inter-technologies .

La chose dissortingbuée de Git est vraiment géniale. Il offre quelques fonctionnalités que Shelvesets ne possède pas (dans le produit actuel), telles que les options de restauration et de validation locales (telles que la fonctionnalité d’historique local d’Eclipse ). Vous pourriez alléger cela en utilisant des twigs de développeur, mais soyons honnêtes, de nombreux développeurs n’aiment pas les twigs et la fusion d’un bit. On m’a demandé de réactiver à plusieurs resockets la fonctionnalité “checkout exclusif” de l’ancien style (et de la refuser à chaque fois).

Je pense que beaucoup de grandes entresockets ont peur de permettre à un développeur d’introduire toute l’histoire dans un espace de travail local et de l’emporter avec lui (à un nouvel employeur par exemple)… Voler un instantané est mauvais, mais en emportant toute une histoire est encore plus gênant. (Non pas que vous ne pouviez pas obtenir un historique complet de TFS de votre part) …

Il est mentionné que c’est un excellent moyen de sauvegarder, ce qui est idéal pour les sources ouvertes là où le responsable original s’arrête et supprime sa version, mais pour un plan d’entreprise, de nombreuses entresockets n’en ont pas. pour conserver les sauvegardes. Et il serait difficile de savoir quelle version utiliser si le projet principal disparaît. Ce qui aurait tendance à désigner un référentiel comme principal / central.

Ce que j’aime le plus dans Git, c’est l’option Push / Pull, dans laquelle vous pouvez facilement append du code à un projet sans avoir besoin de droits de validation. Je suppose que vous pouvez utiliser des utilisateurs et des étagères très limités dans TFS pour imiter cela, mais ce n’est pas aussi puissant que l’option Git. Le regroupement des projets d’équipe peut aussi bien fonctionner, mais d’un sharepoint vue administratif, il n’est pas vraiment possible pour de nombreuses entresockets d’append des projets d’équipe à des tâches administratives supplémentaires.

Je voudrais également append aux choses mentionnées dans la zone de contrôle non source. Des fonctionnalités telles que le suivi des éléments de travail, la génération de rapports et l’automatisation de la génération (y compris la gestion de laboratoire) bénéficient grandement d’un référentiel centralisé. Celles-ci deviennent beaucoup plus difficiles lorsque vous utilisez un modèle dissortingbué pur, à moins que vous ne créiez l’un des nœuds en tête (et que vous retourniez ainsi à un modèle moins dissortingbué).

Avec TFS Basic fourni avec TFS 11, il n’est peut-être pas loin de s’attendre à un TFS dissortingbué qui vous permet de synchroniser votre base TFS locale avec un TFS central dans l’ère TFS 12+. Je mettrai mon vote pour ça dans le service client !

Pour moi, la principale différence réside dans tous les fichiers auxiliaires que TFS appenda à votre solution (.vssscc) pour «prendre en charge» TFS. Nous avons récemment rencontré des problèmes avec ces fichiers, ce qui a donné lieu à un débogage intéressant. …