strategy merging convert branching and tfs branching-and-merging hotfix

merging - convert to branch tfs



Team Foundation: estructura de lanzamiento mĂșltiple (2)

Pregunta: Si se crea "Versión B" ANTES de completar un proyecto de "Desarrollo", entonces se requiere una "Revisión" para "Versión A", ¿cómo propagar ese "Hotfix" de "Versión A" a "Versión B" sin recogiendo cualquier proyecto de "Desarrollo" que se complete mientras tanto?

Respuesta corta: para el escenario específico descrito, creo que podría fusionar de forma segura desde la versión A hasta la versión principal y luego volver a la versión B. (Sí, esto es idéntico a lo que declaró Geoffrey McGrath en un comentario el 8/16). No se fusiona ninguna FI desde Main a una rama de versión después de crear la rama, pero si puede confirmar que el único cambio presente en Main es su hotfix, la fusión debería lograr su objetivo. SIN EMBARGO, esto se basa en la muy cuestionable suposición de que usted tiene una rama principal limpia sin nada más que se haya fusionado en Main ya que "Release B Servicing" fue ramificado. ¡Verifique esta suposición con mucho cuidado antes de continuar!

Dirty Main soluciones alternativas - cherry picking o fusión infundada: si hay otros cambios en Main, puede elegir cuidadosamente la fusión específica de Main a "Release B Service Pack". Otra opción es realizar una combinación sin fundamento desde "Liberar servicio A" directamente en "Liberar servicio B", que pasa por alto cualquier otro cambio en Principal. (Todavía necesita fusionar esta solución en main para que las ramas de Dev obtengan la revisión). Tenga en cuenta que las combinaciones de combinación selectiva y las combinaciones sin base tienen mayor riesgo que las fusiones regulares (lo que puede ser lo suficientemente complicado como es). Aún así, son opciones válidas para escenarios específicos donde no existe una mejor solución.

Meta-respuesta n. ° 1: me parece que dibujar un diagrama me ayuda a seguir los cambios desde la rama original hasta el destino final. Cherry-pick no tiene ninguna notación especial, pero la combinación sin base puede ser una flecha con línea punteada. Si funciona en papel (y usted contabilizó todas las otras interacciones de rama con Main), entonces debería funcionar.

Meta-respuesta n. ° 2: si lo anterior no ha respondido abiertamente a su pregunta, le recomendaría leer el foro http://tfsbranchingguideiii.codeplex.com/discussions y enviar esta solicitud específica de forma cruzada. Bill Hays suele ser muy receptivo en ese foro y su pregunta definitivamente apunta a la administración de revisiones dentro de la bifurcación de TFS.

FYI:

Mi equipo trabaja en algunos proyectos SOA (Arquitectura Orientada a Servicios) que enfrentan desafíos similares a los de SaaS. El ciclo de control de calidad de un mes es una complicación difícil.

Me gusta mucho el artículo de Martin (lo suficiente para citarlo de nuevo a continuación). Hay dos artículos adicionales que vale la pena revisar (ambos tienen imágenes bonitas para aumentar los buenos diagramas de la Guía de Branching TFS). Sin embargo, los tres artículos se centran en la administración de la rama de desarrollo en lugar de la administración de la rama de lanzamiento de revisiones (igual que el diagrama en la respuesta anterior).

  1. Orientación: Una estrategia de ramificación para los equipos de Scrum - Martin Hinshelwood 2010.04.14 - Excelente recorrido de la estrategia básica "rama por lanzamiento", ya que un equipo de Scrum trabaja a través de 2 sprints (con grandes diagramas).
  2. Branching for Scrum - Bill Heyes (ALM Ranger) 2011.01.18 - Excelentes diagramas de equipo de scrum y ramas de escala.
  3. Parallel Feature Teams trabajando en múltiples lanzamientos en desarrollo . Lanzamientos mensuales a producción. - Bill Heyes 2011.01.14 - Muy similar a nuestro escenario de bifurcación (3 equipos de desarrollo web + 1 Prod env.). La orientación es Rama por Equipo + Rama por Liberación.

¡Disfrutar! - Zephan

Necesito ayuda para configurar una estructura de ramificación TFS.

El escenario actual es el siguiente, nuestra aplicación es un SaaS, y creo que necesitamos varias sucursales de "Liberación" simultáneamente.

Pasando por la TFS Branching Guide III, estoy bastante seguro de que necesitaremos el modelo de ramificación "Avanzado".

Comenzamos con una sucursal "principal", que alojará la aplicación tal como está en este momento (venimos de Visual Source Safe). A partir de eso crearemos una rama de "Desarrollo", y lo dejaremos solo por el momento. También crearemos un nuevo árbol de "Service Pack", "Hotfix" y "Release A" que contendrá nuestro conjunto actual de cambios. Luego haremos que nuestro equipo de control de calidad analice la rama "Release A" y, si pasa, la cerraremos (solo lectura) y la fusionaremos nuevamente a "main".

Eso está bien y excelente hasta ahora.

El problema es que el ciclo de control de calidad demora aproximadamente un mes, mientras tanto, queremos que nuestros desarrolladores trabajen en nuevos proyectos de "Service Pack" y "Desarrollo" para la "Versión B", que también tendrá su propio "Servicio". Pack "," Hotfix "y" Release B "branches.

Esto significa que tenemos 2 ramas de publicación a la vez (a menos, por supuesto, que haya una forma más inteligente de hacerlo).

Pregunta: Si se crea "Versión B" ANTES de completar un proyecto de "Desarrollo", entonces se requiere una "Revisión" para "Versión A", ¿cómo propagar ese "Hotfix" de "Versión A" a "Versión B" sin recogiendo cualquier proyecto de "Desarrollo" que se complete mientras tanto?