Quelles sont les grandes différences entre TFVC (TFS Version Control) et Git pour le contrôle de code source lors de l'utilisation de Visual Studio 2013?

101

Il y a des tonnes de questions et de réponses sur Git par rapport au contrôle de source TFVC, mais aucune réponse actuelle ne couvre l'intégration de Git dans Team Foundation Server / Service que je peux trouver.

Je commence le développement de pâturages verts en utilisant une grande variété de langages (C #, C ++, PHP, Javascript, MySSQL) en utilisant Visual Studio 2013. Dans le futur, il y aura du développement iOS. Je connais très bien SVN, VSS et TFVC pour le contrôle de source. Cependant, je n'ai jamais utilisé Git. Je préfère TFS pour la gestion des processus / le développement agile ... Ce n'est pas parfait, mais il s'intègre bien dans Visual Studio.

Alors, pour m'aider à choisir entre ces deux systèmes ...

Quelles sont les grandes différences entre TFVC et Git pour le contrôle de code source lors de l'utilisation de Visual Studio 2013?

  • Le seul avantage dans mon cas est-il un référentiel local (sans dire que c'est insignifiant) et un support de développement iOS?
  • Est le seul inconvénient de l'interface de ligne de commande Git (certains diront que ce n'est pas un inconvénient ;-P).
  • Avez-vous une expérience de l'interface graphique de Visual Studio 2013 pour Git? Est-ce suffisant pour prendre en charge le branchement / fusion de base sans l'interface de ligne de commande?
  • Existe-t-il un guide de démarrage détaillé pour Git qui montre que Git est utilisé avec Visual Studio 2013? Microsoft a une vidéo pour intégrer un référentiel Git existant dans Visual Studio 2013, mais je recherche un départ à partir de zéro avec Git et VS 2013.

Je ne cherche pas un livre ici, mais juste quelques puces et peut-être des liens pertinents de personnes qui ont utilisé à la fois TFVC et Git.

Greg Grater
la source

Réponses:

115

Quelles sont les grandes différences entre TFS et Git pour le contrôle de code source lors de l'utilisation de VS 2013?

MSDN a une page très complète sur toutes les fonctionnalités et différences entre Team Foundation Version Control et Git .

Le seul avantage dans mon cas est-il un référentiel local (sans dire que c'est insignifiant) et un soutien au développement IoS?

Non, il y a beaucoup plus, mais ce sont souvent des scénarios avancés de Git. Le repo local, la prise en charge hors ligne et la fidélité locale totale de l'historique sont incroyablement puissants, vous obtenez cela dès la sortie de la boîte avec Visual Studio. Il y a quelques autres fonctionnalités qui sont également excellentes! La possibilité de créer des branches et de fusionner d'un référentiel à un autre est très puissante. Je vous recommande de consulter le livre Pro Git pour ceux-ci. Git dans TFS n'est qu'un autre serveur git, il possède à peu près toutes les fonctionnalités du Git standard.

La possibilité de réécrire l'historique avant la fusion vous permet de supprimer ou de combiner un certain nombre d'ensembles de modifications plus petits, de sorte que l'historique soit plus propre et plus facile à lire en tant qu'être humain.

Est le seul inconvénient de l'interface de ligne de commande Git (certains diront que ce n'est pas un inconvénient ;-P).

TFVC a aussi une ligne de commande, les gens ne l'utilisent tout simplement pas. Pour les personnes qui veulent utiliser Git et ne jamais faire beaucoup plus que TFVC, ils n'auront probablement pas vraiment besoin de quitter l'interface utilisateur, ils n'auront pas beaucoup de fonctionnalités intéressantes cependant ...

Il peut y avoir quelques autres inconvénients, principalement dus au fait que c'est différent de ce à quoi les gens sont habitués. Ce n'est pas trop difficile de se tirer une balle dans le pied si vous ne prenez pas le temps d'apprendre ce que fait git quand vous faites des choses. Des choses comme Rebase et Squash sont vraiment puissantes et créent une histoire très propre, mais cela peut laisser les gens avec le problème qu'ils ne peuvent plus fusionner s'ils sont utilisés de manière incorrecte. TFS a la capacité de mettre certains paramètres de sécurité pour retirer les droits de prendre des décisions très stupides sur un référentiel git .

Un add-on très cool pour les utilisateurs de Git sur Windows est PoSHGit . il fournit l'autocomplétion des commandes sur la ligne de commande Powershell.

Avez-vous une expérience de l'interface graphique VS 2013 pour Git? Est-ce suffisant pour prendre en charge le branchement / fusion de base sans l'interface de ligne de commande?

Il a tout ce dont vous avez besoin pour les opérations de base. Mais vous devez être capable de visualiser les différentes branches pour savoir ce qui se passe. Puisque le serveur Git et le dépôt local ne sont que Git, n'importe quel client git peut vous aider ici. SourceTree est une option ici. Le client Git pour Windows en est un autre.

Pour les opérations standard, archiver, extraire, fusionner, créer une branche (ou pousser, tirer, récupérer, valider, fusionner) l'interface utilisateur fonctionne très bien.

Existe-t-il un guide de démarrage détaillé pour Git qui montre que Git est utilisé avec VS 2013? MS a une vidéo pour intégrer un référentiel Git existant dans VS 2013, mais je cherche un départ à partir de zéro avec Git et VS 2013?

Commencer avec Git est disponible dans un certain nombre d'endroits ... Voici quelques options:

Autres bonnes lectures:

Et quelques outils à installer:

jessehouwing
la source
3
Les ALM Rangers publieront bientôt leur guide des utilisateurs de Git pour TFVC ici: vsarbranchingguide.codeplex.com/releases . La version bêta actuelle ne l'a pas encore, je pense qu'elle tombera avec le prochain lot :).
jessehouwing
8
Après presque un an depuis mon article original, j'ai pensé que je vous ferais tous savoir que nous avons utilisé VS2013 avec Git avec succès. J'adore la possibilité de créer plusieurs référentiels sous un seul projet d'équipe. Nous avons eu quelques problèmes de fusion. Dans plusieurs cas, la fusion automatique choisit de manière incorrecte. Donc, ce qui ressemble à une fusion réussie ne l'est vraiment pas. Nous vérifions maintenant tous les fichiers fusionnés. En outre, il existe certains cas où la fusion s'étouffe et génère une erreur dans l'interface utilisateur VS (conflit de fusion libgit2). Pour corriger, nous devons passer à l'invite cmd et lancer un git pull (pas amusant).
Greg Grater
1
Je sais qu'il y a un correctif à venir pour cette dernière erreur dans le cadre de la mise à jour 4. Et qu'il y avait des cas où les paramètres de fin de ligne différaient entre les développeurs qui peuvent provoquer ces problèmes.
jessehouwing
5
Nous utilisons VS 2013 avec la mise à jour 4 depuis sa sortie il y a des mois et il semble avoir résolu tous nos problèmes Git à partir de l'interface graphique. Nous avons l'habitude de tirer régulièrement du serveur distant, ce qui permet de maintenir nos référentiels locaux à jour. De plus, MS a récemment effectué plusieurs mises à jour positives du Backlog produit / des tableaux de tâches. Directement à partir du tableau, vous pouvez maintenant modifier la description, attribuer, définir le statut et ajuster la priorité / l'ordre de l'élément.
Greg Grater
1
Les liens "Git vs TFVC" renvoient à "Premiers pas avec Git". Cela signifie-t-il maintenant que nous devrions mieux utiliser Git sur TFVC? ; D a trouvé un nouveau lien: visualstudio.com/en-us/docs/tfvc/comparison-git-tfvc
Martin Schneider
17

Pour clarifier une terminologie mixte déroutante qui est beaucoup utilisée avec TFS

Team Foundation Server (TFS) est un outil de gestion du cycle de vie des applications, qui comprend un système de contrôle de version source (VCS) composant de .

Le composant VCS utilisé par TFS est principalement Team Foundation Version Control (TFVC)

Donc, la question serait TFVC vs Git

(En fait, TFS prend en charge Git en tant que VCS qu'option .)

Donc, la question est: TFVC vs Git

jessehouwing a une excellente réponse qui couvre cela en détail, alors veuillez la référencer

En ce qui concerne le choix de celui à utiliser, à mon avis, Git gagne

  1. Il est léger: simple à installer et à utiliser.
  2. Sa nature distribuée signifie qu'il est très résistant aux catastrophes, quelqu'un aura toujours une copie du repo.
  3. Le travail hors ligne est simple, vous travaillez avec votre propre référentiel complet. Vous pouvez valider les modifications, revenir en arrière, parcourir l'historique, etc. Vous n'avez besoin d'être en ligne que lorsque vous souhaitez synchroniser avec un référentiel distant.
  4. Dans TFS, il n'y a pas de moyen simple d'enregistrer l'état de vos modifications (ajouts de fichiers, modifications, suppressions de fichiers) et de passer à un autre état de code. (Par exemple, pour travailler sur deux fonctionnalités et basculer d'avant en arrière). Dans git, vous récupérez simplement une branche différente.
James Wierzba
la source
1
TFS a des branches et des ensembles d'étagères (ce qui permet le # 5) et vous pouvez même configurer vos projets pour utiliser git si vous le souhaitez vraiment. TFS VCS a également une ligne de commande pour #. Ce n'est pas léger mais il fait beaucoup plus que git car il a une gestion de projet complète / suivi des bogues / suivi du travail / gestion des versions / gestion de la construction / politique d'enregistrement / tests intégrés.
Matthew Whited
@MatthewWhited Bien sûr, c'est possible, mais c'est extrêmement lourd par rapport à git, en raison de son implémentation basée sur un répertoire par rapport à l'implémentation basée sur un graphe de git. Notez que j'ai déclaré qu'il n'y avait aucun simplemoyen de le faire.
James Wierzba
@MatthewWhited De plus, je suis d'accord sur l'outillage supplémentaire du cycle de vie des applications, mais je porte ma réponse uniquement aux solutions de contrôle de version de code source.
James Wierzba
1
IDK ... J'ai trouvé TFS assez simple à utiliser. Bien que je n'aime pas non plus toutes les branches créées par GIT, car cela rend plus complexe de s'assurer que tout le monde est un même code avec un taux de désabonnement rapide pour certains et lent pour d'autres.
Matthew Whited
Je ne sais pas. GIT est tout simplement trop compliqué pour la tâche qu'il vise à accomplir et très peu intuitif (pourquoi s'agit-il d'une pull request et non d'une push request?!). Le contrôle de source TF est très simple et peut être expliqué à tout nouveau développeur de mon équipe en quelques minutes. Je vois aussi encourager le travail localement comme un gros inconvénient au sein d'une équipe et même individuellement. Comment éviter de perdre votre travail dans Git sans encombrer le projet de branches? (Pour cela, il y a des étagères dans TFS - SUR LE SERVEUR)
Cesar
4

Est le seul inconvénient de l'interface de ligne de commande Git (certains diront que ce n'est pas un inconvénient ;-P).

Si vous n'êtes pas à l'aise avec l'interface de ligne de commande, plusieurs interfaces graphiques sont disponibles pour Git. Git lui-même contient en fait un outil GUI de navigateur de référentiel appelé gitket git-gui- une interface graphique pour git. Ensuite, il y a des applications tierces telles que git-cola , TortoiseGit et autres .

Kralyk
la source
2
Bien sûr, Visual Studio lui-même fournit une interface graphique pour Git. Mais il y a toujours des moments où vous voudrez peut-être plonger dans la ligne de commande pour faire des choses qui seraient autrement impossibles. Une interface graphique qui expose toutes les commandes Git est tout aussi difficile que la ligne de commande.
jessehouwing
Il existe des outils électriques de ligne de commande. Par exemple pour éliminer complètement une branche de l'existence.
Ingénieur