strategy merging convert branching and tfs version-control branching-and-merging

merging - convert to branch tfs



TFS de ramificación, ¿cuáles son las ventajas? (2)

Soy bastante nuevo en TFS y control de fuente. No puedo entender la ventaja de la ramificación. Como puedo hacer lo mismo creando 2 carpetas principales y desarrollo, cuando termine con el desarrollo. Puedo fusionar el código usando cualquier herramienta diff con la rama principal.

Entonces, ¿de qué sirve tener ramas? Sé que debe haber una gran ventaja, pero no puedo entender.


(ACTUALIZACIÓN: TFS ahora admite git para el control de versiones, por lo que el resto de esta respuesta ya no se aplica)

Yo buscaría en Google branch-per-feature.

La principal ventaja de la bifurcación es que puede trabajar en una función y no ser interrumpido por el trabajo de otra persona. Cuando esté listo, puede fusionar y ver si muchas características funcionan bien juntas o no. Esto generalmente se hace a medida que se desarrolla la función, pero para las características pequeñas se puede hacer una vez que se completa la función.

La ventaja es que tienes un historial claro de lo que hiciste para implementar algo. Sin sucursales, tendría un montón de confirmaciones combinadas con otras confirmaciones de características. Si QA no pasa una determinada función, tiene su trabajo cortado para que pueda armar otra compilación utilizando solo las confirmaciones para las otras características. La otra alternativa es intentar arreglar su función para que pase QA. Esto puede no ser posible un viernes por la tarde.

La característica alterna es otra manera de omitir el trabajo, pero esto aumenta la complejidad del código y los conmutadores pueden tener errores en ellos. Esto es algo de lo que hay que estar muy cansado y ver cómo esto se convirtió en una solución "aceptable".

Las ramas también se utilizan para rastrear los cambios a versiones múltiples de lanzamientos. Los productos que consumen varios clientes pueden encontrarse en una situación en la que un grupo de clientes usa 1.0 del producto, mientras que otros ya están en 2.0. Si admite ambos, debe rastrear los cambios en cada uno por las ramas que están designadas para ellos. Los puntos anteriores todavía se aplican al desarrollo de estas ramas.

Una vez dicho esto, TFS no es ideal en la rama por función por una serie de razones. Lo más importante es que no admite fusiones de tres vías: solo tiene lo que se denomina fusión sin base. La forma en que se realiza el seguimiento de la historia, TFS no puede mostrarle un ancestro común entre la rama de características y el lugar donde intenta fusionarla. Esto te deja potencialmente resolviendo muchos conflictos. En general, muchas personas que usan TFS evitan la ramificación por este motivo.

Las combinaciones de 3 vías son geniales porque le mostrarán cuál es el antecesor común, cuáles son sus cambios y cuáles son los cambios en la otra rama. Esto le permitirá tomar una decisión muy educada sobre cómo resolver un conflicto.

Si tiene que usar TFS, sugeriría usar git-tfs para poder aprovechar las fusiones de 3 vías y muchas otras características. Algunos de ellos incluyen: revisión, rebase, modelo desconectado, historial local, bisección y muchos más.

Rebase es muy útil ya que le permite alterar una función basada en otro punto de partida, omitir commits, squash commits juntos, split commits, etc. Una vez listos, se fusionan en una rama de integración o release, dependiendo del flujo de trabajo usted decide sobre.

Mercurial es también otro que puede ser más fácil de usar, pero no será tan poderoso en el largo plazo.

Si tiene la oportunidad, le recomendaría que se aleje de TFS para el control de la fuente debido a muchas limitaciones en comparación con DVCS de hoy en día.

Aquí hay un buen conjunto de pautas a seguir si desea administrar de manera efectiva la bifurcación / fusión:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

Espero que esto ayude.