La pequeña encuesta de Martin Fowler dice mucho sobre el estado de TFS en años anteriores. 'peligroso' tiene toda la razón. (Creo que esto se refiere a la forma en que no reconoce los cambios realizados fuera de VS, por lo que puede crear un proyecto WCF, luego usar la herramienta externa svcutil para crear su cliente, luego verificar todos sus cambios en ... pero TFS lo hará felizmente ignore los cambios de su cliente porque no se hicieron dentro de VS).
Debe tener en cuenta el costo: la versión requerida de VS para obtener los beneficios: las revisiones de código, por ejemplo, requieren la edición Premium, que es significativamente más costosa si obtiene VS a través de MSDN. Además, acceder al sistema para usuarios que no son VS está bien, pero si quieren el acceso completo en lugar de la vista web reducida, entonces tendrán que pagar por CAL para ellos. El costo total de TFS puede ser bastante. Incluso el reciente informe de Forrester(comisionado por Microsoft, por lo que debe leer un poco entre líneas) dice que TFS requiere un soporte administrativo significativo: 2 consultores y 6 administradores (que dedicaron el 25% de su tiempo) tuvieron que apoyar a TFS para su estudio de caso de 122 usuarios (funciona para 4.5 administradores sobre esos 122 usuarios ... esto es mucho en comparación con solo configurar y mantener una solución SVN completa mientras hago mi trabajo diario). TFS puede tomar mucho esfuerzo para seguir trabajando como la gente espera.
En mi experiencia con TFS2012 (olvide las versiones anteriores, ya que son basura), es que es un sistema de administración muy complicado, especialmente si sale de la configuración predefinida. Por ejemplo, si usa MSBuild para construir todo, está bien. Pero si tiene, por ejemplo, una carga de viejos proyectos .vdproj que ya no son compatibles con MSBuild, debe editar el enorme script de compilación xaml para que compile estos proyectos. Después de varios días trabajando en esto, lo mejor que pude hacer fue reconstruir la solución pasándola a devenv, e incluso entonces, obtener los resultados de la compilación y ponerlos en el resumen de la compilación era imposible. Otros equipos obtuvieron resultados similares que usaron NUnit para sus pruebas: si usa el MSTest incorporado, entonces funciona. De lo contrario, estás bastante lleno.
Como usuario, encuentro que la integración es más una molestia. Prefiero TortoiseSVN y hago casi todo mi trabajo de SCM a través de eso (ya que es una herramienta increíble). Con TFS, terminas con una nueva pantalla dentro de VS para cada operación. Por lo tanto, tiene una nueva pestaña en su entorno para el explorador del equipo, y otra para las compilaciones, y otra para cada resumen de compilación que desea ver (y si desea ver los detalles de una compilación, un error, por ejemplo, tiene hacer clic en demasiados enlaces). ¡Encontré que la cantidad de documentos que tenía abiertos al usar TFS eran más que los archivos de origen!
Lo mismo se aplica a los registros, la confirmación de los cambios requiere hacer clic en varias pestañas en el panel Cambios pendientes en VS para asignar un elemento de trabajo y comentar sus registros. Es algo pequeño, pero lo encontré molesto ya que estaba acostumbrado a herramientas más optimizadas.
Extender el sistema de construcción fue otra área que me pareció que faltaba. Agregar nuevas funciones a la compilación es difícil debido a la configuración de xaml, y obtener los resultados de esas funciones en las pantallas de compilación es muy difícil o imposible. Entonces, si le gusta agregar cosas como la complejidad del código o el análisis estático, o incluso pruebas automatizadas a través de, digamos selenio, o implementaciones ... olvídalo. A menos que esté utilizando las herramientas de Microsoft para estos aspectos (por ejemplo, fxcop).
La actualización del flujo de trabajo fue otra molestia, aunque los powertoys ayudaron enormemente, todavía era incómodo lograr el flujo de trabajo correcto y aún no puede configurar el tablero de scrum con la información que realmente desea ver; nuevamente, obtiene los valores predeterminados o nada .
La fusión también fue dolorosa, creo que hay una muy buena razón por la cual MS ha adoptado git para TFS (tenga en cuenta que esto solo funciona con proyectos TFS nuevos, no puede convertir de TFS a backends git).
En general, no está tan mal como funciona, pero he descubierto que muchas otras herramientas son mucho mejores. La desventaja de esas herramientas es que no vienen completamente integradas, pero en mi humilde opinión, esta es una fortaleza, ya que puede elegir los mejores bits que desee. Con TFS obtienes prácticamente lo que alguien más quiere que tengas. Si decide que el sistema de errores en TFS es deficiente (y creo que lo hará), tendrá dificultades para cambiar a uno diferente.
TFS debe considerarse junto con otras herramientas grandes y gordas de ciclo de vida completo. La mayoría de los desarrolladores odian esas cosas ya que no les gustan las restricciones que estas herramientas terminan imponiéndoles.
Sin embargo, lo probaría, descargue las versiones de prueba de 30 días e instálelo. Al evaluar, recuerde cambiar un poco aquí y allá, no lo use solo para registrar el código fuente, registrarse con un elemento de trabajo requerido y obtener informes basados en ese elemento de trabajo. Intente asignar un registro a múltiples elementos de trabajo, e intente combinar elementos de trabajo juntos según lo relacionado. Intente incorporar algo diferente en el sistema de compilación, vea cómo obtener un informe de progreso diario de los servicios de informes, vincule un documento a un requisito de flujo de trabajo y rastree a través de la clasificación de errores a la codificación para compilar para volver a trabajar y luego liberar. Ramifica y fusiona mucho. Si no puede hacer todas estas cosas fácilmente, entonces también podría apegarse a git. No tiene mucho sentido utilizar TFS si no aprovecha la mayoría de sus funciones de ALM.