TFS? Courez pour les collines! Partez aussi vite que possible. Il fait beaucoup de choses différentes, mais aucune n'est aussi bonne que les meilleurs outils disponibles.
Mais sérieusement:
Une fois que vous avez un système de contrôle de version décent (SVN, GIT, etc.), je recommanderais de définir des règles pour la gestion des succursales, par exemple quand créer des succursales, pour quoi, quand fusionner, qui, et bien plus encore.
Jusqu'à récemment, nous utilisions une seule branche pour les nouveaux développements («tronc»). Pour une version, nous créerions une branche hors du tronc. L'AQ finale serait effectuée dans cette branche et une fois terminée, nous publierions (nous sommes sur des versions mensuelles).
Nous sommes passés au concept de «pas de courrier indésirable dans le coffre» pour réduire le risque d'horaire. Ce concept contient essentiellement une règle par laquelle vous créez des branches pour le travail de développement distinctes du tronc. Par exemple, vous pouvez avoir une branche distincte pour une fonctionnalité, pour une petite équipe de développement ou similaire. Nous utilisons des «épopées» pour décrire une petite fonctionnalité ou une partie libérable d'une fonctionnalité et créer une branche pour chaque épopée. Au moins une fois par jour, tous les changements du tronc sont fusionnés dans la branche épique. La clé est une bonne prise en charge de la fusion par le contrôle de version ou un outil séparé (par exemple la fusion à trois voies). L'AQ pour l'épopée se ferait sur la branche épique. Une fois passée, la branche épique serait fusionnée dans le tronc et un test d'intégration serait exécuté. Nous avons encore des succursales pour les sorties.
Avec les branches épiques, nous avons considérablement réduit le risque de calendrier car nous sommes maintenant en mesure de sortir du coffre et d'inclure toutes les épopées qui ont été fusionnées avec succès dans le coffre. Les épopées qui ne sont pas complètes manquent le bus et feront la prochaine sortie (le mois prochain).
Bien sûr, cela ne peut fonctionner que dans notre environnement. Très probablement, vous aurez des facteurs différents des nôtres qui influeront sur les meilleurs choix pour la gestion des succursales.
Par exemple, si vous avez une équipe avec beaucoup de personnes travaillant à distance et n'étant pas toujours connectées au serveur de contrôle de version, alors vous voudrez utiliser un système de contrôle de version qui prend en charge un modèle distribué. GIT et quelques autres tomberaient dans cette catégorie. TFS à ma connaissance nécessite une connexion au serveur pour rendre les fichiers accessibles en écriture (corrigé dans la version 2010?).
J'espère avoir pu montrer qu'il n'y a pas de "taille unique". Commencez par vos processus en particulier la gestion des succursales, déterminez les exigences et enfin sélectionnez l'outil qui correspond le mieux à vos besoins. C'est peut-être TFS, peut-être pas.