Le petit sondage de Martin Fowler en dit long sur l'état du TFS les années précédentes. «dangereux» a tout à fait raison. (Je pense que cela fait référence à la façon dont il ne reconnaît pas les modifications apportées en dehors de VS, vous pouvez donc créer un projet WCF, puis utiliser l'outil svcutil externe pour créer votre client, puis vérifier toutes vos modifications dans .. mais TFS le fera ignorez heureusement les modifications apportées à vos clients car elles n'ont pas été effectuées dans VS).
Vous devez compter le coût: la version requise de VS pour obtenir les avantages - les revues de code, par exemple, nécessitent une édition Premium qui est nettement plus chère si vous obtenez VS via MSDN. En outre, l'accès au système pour les utilisateurs non-VS est très bien, mais s'ils veulent un accès complet à la vue Web réduite, vous devrez alors débourser des CAL pour eux. Le coût global de TFS peut être très élevé. Même le récent rapport Forrester(commandé par Microsoft, vous devez donc lire un peu entre les lignes) dit que TFS nécessite un soutien administratif important - 2 consultants et 6 administrateurs (qui ont passé 25% de leur temps) ont dû prendre en charge TFS pour leur étude de cas de 122 utilisateurs (cela équivaut à 4,5 administrateurs sur ces 122 utilisateurs ... c'est beaucoup par rapport à moi qui configure et gère une solution SVN complète tout en faisant mon travail quotidien). TFS peut prendre beaucoup d'efforts pour continuer à fonctionner comme les gens s'y attendent.
D'après mon expérience avec TFS2012 (oubliez les versions précédentes car elles sont de la merde), c'est qu'il s'agit d'une administration système très compliquée, surtout si vous sortez de la configuration prédéfinie. Par exemple, si vous utilisez MSBuild pour tout construire, tout va bien. Mais si vous avez, par exemple, une charge d'anciens projets .vdproj qui ne sont plus pris en charge par MSBuild, vous devez modifier l'énorme script de construction xaml pour lui permettre de construire ces projets. Après plusieurs jours à travailler sur cela, le mieux que j'ai pu faire était de reconstruire la solution en la passant à devenv, et même alors, obtenir les résultats de la construction et les insérer dans le résumé de la construction était impossible. Des résultats similaires ont été obtenus par d'autres équipes qui ont utilisé NUnit pour leurs tests - si vous utilisez le MSTest intégré, alors cela fonctionne. Sinon, vous êtes à peu près bourré.
En tant qu'utilisateur, je trouve que l'intégration est plus gênante. Je préfère TortoiseSVN et je fais presque tout mon travail SCM via cela (car c'est un outil génial). Avec TFS, vous vous retrouvez avec un nouvel écran dans VS pour chaque opération. Vous avez donc un nouvel onglet dans votre environnement pour l'explorateur d'équipe, un autre pour les builds, et un autre pour chaque résumé de build que vous voulez voir (et si vous voulez voir les détails d'une build, une erreur par exemple, vous avez cliquer sur trop de liens). J'ai trouvé que le nombre de documents que j'avais ouverts lors de l'utilisation de TFS était supérieur aux fichiers source!
Il en va de même pour les consignations, en validant les modifications requises en cliquant sur plusieurs onglets du volet Modifications en attente dans VS pour affecter un élément de travail et un commentaire à vos consignations. C'est une petite chose, mais je l'ai trouvé ennuyeux car j'étais habitué à des outils plus rationalisés.
L'extension du système de construction était un autre domaine qui me manquait. Ajouter de nouvelles fonctionnalités dans la build est difficile à cause de la configuration de xaml, et obtenir les résultats de ces fonctionnalités dans vos écrans de build est soit très difficile, soit impossible. Donc, si vous aimez ajouter des choses comme la complexité du code ou l'analyse statique, ou même des tests automatisés via, disons, du sélénium ou des déploiements ... À moins que vous n'utilisiez les outils Microsoft pour ces aspects (par exemple fxcop).
La mise à jour du flux de travail était un autre problème - bien que les powertoys aient énormément aidé, il était toujours difficile de bien gérer le flux de travail, et vous ne pouvez toujours pas configurer la carte Scrum avec les informations que vous voulez vraiment voir - encore une fois, vous obtenez les valeurs par défaut ou rien .
La fusion a également été douloureuse, je pense qu'il y a une très bonne raison pour laquelle MS a adopté git pour TFS (notez que cela ne fonctionne qu'avec les tout nouveaux projets TFS, vous ne pouvez pas convertir de TFS en backends git).
Donc, dans l'ensemble, ce n'est pas trop mal car cela fonctionne, mais j'ai trouvé que beaucoup d'autres outils sont bien meilleurs. L'inconvénient de ces outils est qu'ils ne sont pas entièrement intégrés, mais à mon humble avis, c'est une force car vous pouvez choisir les meilleurs bits que vous voulez. Avec TFS, vous obtenez à peu près ce que quelqu'un d'autre veut que vous ayez. Si vous décidez que le système de bogues dans TFS est médiocre (et je pense que vous le ferez), vous aurez du mal à passer à un autre.
TFS doit être pris en compte avec d'autres gros et gros outils de cycle de vie complet. La plupart des développeurs détestent ces choses car ils n'aiment pas les restrictions que ces outils finissent par leur imposer.
Je l'essayerais cependant, téléchargerais les essais de 30 jours et l'installerais. Lors de l'évaluation, n'oubliez pas de changer un peu ici et là, ne vous contentez pas de l'utiliser pour une vérification du code source, une vérification avec un élément de travail requis et obtenez des rapports basés sur cet élément de travail. Essayez d'affecter une consignation à plusieurs éléments de travail, et essayez de combiner les éléments de travail ensemble comme liés. Essayez d'incorporer quelque chose de différent dans le système de build, voyez comment obtenir un rapport d'avancement quotidien des services de reporting, liez un document à une exigence de workflow et tracez-le via le triage des bogues jusqu'au codage à construire pour retravailler puis publier. Branche et fusionne beaucoup. Si vous ne pouvez pas facilement faire toutes ces choses, vous pouvez tout aussi bien vous en tenir à Git. Il n'y a pas grand intérêt à utiliser TFS si vous ne profitez pas de la plupart de ses fonctionnalités ALM.