Características de la bifurcación de Team Foundation Server, en comparación con otras

¿Cuáles son las características de ramificación de TFS?


Ramificación temprana / ramificación pesada

Si miramos las herramientas Perforce, Subversion, CVS, por ejemplo, vemos que la ramificación es tomar una copy del tronco. Es una "ramificación temprana" de todos los files que se definen como ramificados, independientemente de si esos files se han modificado en esa twig.

Esta metodología comienza a crear nuevas versiones de files, en el momento en que se toma la decisión de crear una twig, para todo el tree de files.

Una de las mayores desventajas es que cualquier cambio realizado fuera de esa twig (generalmente en el tronco), que desea incorporar a la sucursal, requiere fusiones por file hacia el interior de estos files, ya que tienen una "ramificación temprana".

Branching tardío / Branching barato

En comparación con las herramientas más recientes, por ejemplo, ClearCase, Plastic SCM, AccuRev, Mercurial, Git, vemos una política de ramificación tardía (barata).

Vemos que las primeras versiones nuevas en una twig solo se crean cuando un file se registra en una sucursal.

Esto significa que cuando se producen cambios en el enlace troncal que desea volver a establecer en su sucursal, no se producen fusiones de files sin cambios.

¿Cómo se comporta TFS?


advertencias: observo que mi terminología no es exacta cuando consideramos las herramientas DVCS. Reconozco que Perforce tiene una forma indirecta de superponer vistas, pero no se hace sin un gran trabajo.

Nota: la Guía de bifurcación del server de Microsoft Team Foundation (o la Guía de bifurcación de TFS , una revisión en curso de la primera, mencionada por Ryan Cromwell en los comentarios) puede ayudar aquí.

En el documento "Single Dev Team Scenario 2.0.pdf" de TFS Branching Guide – Lab.zip file, verá que a la creación de una twig le sigue una confirmación (una comprobación de todos los files de la twig original).
El espacio utilizado se minimiza, como se describe en la página Aislamiento para la queueboración :

Cuando crea una nueva bifurcación y confirma, todos los files en la nueva bifurcación que son idénticos a los files en la bifurcación de origen apuntan al mismo contenido.
El resultado es que una twig consume muy poco espacio de almacenamiento adicional, y ese espacio de almacenamiento se expande solo cuando el file ramificado se vuelve diferente de la fuente.
E incluso cuando cambian los files, Team Foundation Server emplea un motor de diferenciación para analizar los cambios entre los files y, una vez más, optimizar el espacio de almacenamiento.

Por lo tanto, es una gran ramificación para TFS2008 (con optimization del espacio).

En TFS2010, las twigs son objects de primera class y se separan fácilmente de las carpetas simples.

TFS ramas

Me dijeron que TFS está más cerca de la primera que la segunda.

Estuve en TFS durante 5 años y recientemente cambié a GIT en el último año.

Hay dos desventajas principales para TFS (contra GIT):

1) Sin concepto de Rebase. Toda la interacción de twig a twig es fusión. La combinación del historial de sets de cambios de clocks, y oculta todos los detalles útiles en los comentarios de confirmación. No Cherry-pick, no reconstrucción de la línea de time. Esto lleva a interminables caminatas de padres e investigaciones serias para determinar la historia de un set de cambios.

2) La fusión sin base es una pesadilla. En TFS, si no creaste las relaciones de la sucursal hace 6 meses, vas a tener que invertir / reenviar muchas veces para llegar a tu troncal de destino. En git, todos los troncos son compatibles todo el time.

TFS funciona, pero tiene bloques de ruta. Algunos de los bloques de ruta realmente han perjudicado nuestros ploops de entrega.

Hasta ahora, hemos estado haciendo cosas bastante avanzadas con GIT en un entorno de Agile Team y siempre hemos podido resolver cada problema de fuente nuevo con una solución en minutos, no horas o días . Los niveles de promoción son abstractos y pueden intercambiarse ad-hoc. Los desarrolladores pueden compartir sets de cambios 'nodo a nodo' y queueborar en el trabajo antes de pasar a un repository común.

Sin ofender a la EM, pero simplemente no puedo ponerme detrás de una herramienta que tiene tantos obstáculos listos para usar.

Cuando crea una sucursal en tfs 2008, primero debe registrar los nuevos files bifurcados. Una vez que los controles, el control de versiones de la twig comienza por separado del original. También puede rastrear el historial de los files ramificados antes de que se hayan ramificado, pero debe instalar TFS Follow Branch History Add-in para VS