2010-12-13 10 views
13

Si una estrategia de bifurcación se compone de n cuenta con ramas, una rama "maestra" (línea principal) y una rama "integración". ¿Cuál es el propósito de la rama de integración? ¿Por qué las pruebas y la integración no se pueden realizar en la rama de características en sí?¿Cuál es el propósito de una "rama de integración"?

Respuesta

13

Porque es una rama de características. Solo debe contener cambios relacionados con una función. La rama de integración es donde se reúnen múltiples características para realizar pruebas, antes del último empujón hacia el maestro.

Por supuesto, usted no tiene para separar las cosas de esta manera. Usted podría hacer la integración en ramas de características, al igual que podría hacer todo su trabajo en el maestro. Pero la separación de preocupaciones es algo bueno.

+1

¿Qué es un flujo de trabajo típico utilizando esta estrategia de bifurcación? Obtenga el código "desarrollador completo" en la rama de características y vaya a la rama de integración para crear una versión para QA? – Ben

+0

@Ben: básicamente, sí. El primer paso, sin embargo, sería fusionar el con los últimos cambios en el maestro, especialmente si la característica ha estado en marcha durante algún tiempo. En realidad, la función debería fusionarse regularmente con el maestro para evitar grandes fusiones al final. También tenga en cuenta que no tiene que haber una sola rama de integración definitiva. Una rama de integración puede servir para fusionar algunas características para la versión * x *, mientras que una rama de integración diferente se usa simultáneamente para cotejar una serie de correcciones de errores para la versión * x * - 1. En resumen, la bifurcación debe reflejar su flujo de trabajo; nada más, nada. Menos. –

+0

una vez que el desarrollo se haya movido a la rama de integración, ¿bajo qué circunstancias se realizarían confirmaciones adicionales en la rama de características? – Ben

2

Una razón importante que a menudo veo para la necesidad de una rama de "integración" es cuando sus ramas de características no pueden ser evaluadas por sí mismas. En mi experiencia, esto generalmente se debe a una dependencia de la base de datos. O bien, considere un proyecto de sitio web respaldado por una base de datos ... digamos que es una aplicación JSP alojada en BEA Weblogic, respaldada por una base de datos Oracle de 60 GB; Se necesitaría MUCHO hardware para dar a cada rama de características su propia instancia de BEA Weblogic y Oracle para probar. En cambio, generalmente es más fácil desarrollar lo mejor posible en una rama de características, pero pasar a una rama de integración para realizar pruebas de QA completas, donde la QA debe realizarse en un servidor web completo y una base de datos.

3

Para ser un poco más específico sobre por qué exactamente "la separación es buena": El propósito de la rama de integración es determinar si las nuevas características funcionan no solo, sino también en combinación con otras características nuevas. Esto significa que es posible que no, las funciones pueden causar conflictos que tardan un tiempo en resolverse.

Sin embargo, es posible que desee comenzar a implementar un subconjunto de las nuevas características en la rama de la línea principal, por lo que no bloquea todas las características debido a una incompatibilidad entre dos de ellas.

Ahora, si ya fusionó ramas de características entre sí, tendrá dificultades para fusionarlas por separado en la línea principal. No es del todo imposible, pero sin duda es una molestia (lo he intentado).

Si las ramas de sus características contienen procesadores de código principales, o si se superponen significativamente con respecto a las áreas de código en las que se trabaja, quizás desee llevar esta idea más allá y tener ramas que integren dos características antes de fusionarse en cualquier otro lugar, incluida la rama de integración global, i. mi. tener múltiples niveles de integración. Por supuesto, esto generalmente no es una situación deseable, pero es posible que no puedas evitarlo, y los conflictos resultantes pueden ser mucho más fáciles de resolver si eres generoso con las ramas de integración.

Cuestiones relacionadas