TFS? ¡Corre por las colinas! Muévete lo más rápido que puedas. Hace muchas cosas diferentes, pero ninguna de ellas es tan buena como las mejores herramientas disponibles.
Pero en serio:
Una vez que tenga un sistema de control de versiones decente (SVN, GIT, etc.), recomendaría establecer reglas para la administración de sucursales, por ejemplo, cuándo crear sucursales, para qué, cuándo fusionar, quién y mucho más.
Hasta hace poco, utilizamos una única rama para el nuevo desarrollo ('troncal'). Para un lanzamiento, crearíamos una rama del tronco. El control de calidad final se realizaría en esa rama y una vez completado, lanzaríamos (estamos en lanzamientos mensuales).
Hemos cambiado al concepto de 'no hay basura en el maletero' para reducir el riesgo del horario. Este concepto contiene básicamente una regla por la cual crearía ramas para el trabajo de desarrollo separadas del tronco. Por ejemplo, podría tener una rama separada para una característica, para un pequeño equipo de desarrollo o similar. Utilizamos 'epopeyas' para describir una pequeña característica o parte liberable de una característica y crear una rama para cada épica. Al menos una vez al día, todos los cambios del tronco se fusionan en la rama épica. La clave es un buen soporte de combinación mediante el control de versiones o una herramienta separada (por ejemplo, combinación de tres vías). El control de calidad para la epopeya se haría en la rama épica. Una vez aprobada, la rama épica se fusionaría en el tronco y se ejecutaría una prueba de integración. Todavía tenemos sucursales para lanzamientos.
Con las ramas épicas, hemos reducido sustancialmente el riesgo del cronograma ya que ahora estamos en condiciones de liberarnos del tronco e incluir todas las epopeyas que se fusionaron con éxito en el tronco. Las epopeyas que no están completas pierden el autobús y harán el próximo lanzamiento (el próximo mes).
Por supuesto, esto puede funcionar solo en nuestro entorno. Es muy probable que tenga factores diferentes a los nuestros que influirán en cuáles son las mejores opciones para la gestión de sucursales.
Por ejemplo, si tiene un equipo con mucha gente trabajando de manera remota y no siempre conectado al servidor de control de versiones, entonces querrá usar un sistema de control de versiones que admita un modelo distribuido. GIT y algunos otros entrarían en esta categoría. Según mi conocimiento, TFS requiere una conexión al servidor para que los archivos se puedan escribir (¿arreglado en la versión 2010?).
Espero haber podido demostrar que no hay "una talla para todos". Comience con sus procesos en la gestión de sucursales en particular, determine los requisitos y finalmente seleccione la herramienta que mejor se adapte a sus necesidades. Tal vez sea TFS, tal vez no.