¿Cuál es el propósito de una "twig de integración"?

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

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

Por supuesto, no tienes que separar las cosas de esta manera. Podría hacer la integración en las twigs de características, del mismo modo que podría hacer todo su trabajo en el maestro. Pero la separación de preocupaciones es algo bueno.

Una razón importante que a menudo veo para la necesidad de una twig de "integración" es cuando sus twigs de características no pueden ser evaluadas por sí mismas. En mi experiencia, esto generalmente se debe a una dependencia de la database. O bien, considere un proyecto de website respaldado por una database … digamos que es una aplicación JSP alojada en BEA Weblogic, respaldada por una database Oracle de 60 GB; Se necesitaría MUCHO hardware para dar a cada twig 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 twig de características, pero pasar a una twig de integración para realizar testings de QA completas, donde la QA debe realizarse en un server web completo y una database.

Para ser un poco más específico sobre por qué exactamente "la separación es buena": el propósito de la twig de integración es determinar si las nuevas características funcionan no solo por sí mismas, 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 time en resolverse.

Sin embargo, es posible que desee comenzar a implementar un subset de las nuevas funciones en la twig 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ó twigs 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 sus twigs de características contienen procesadores principales de código, o si se superponen significativamente con respecto a las áreas de código en las que se está trabajando, tal vez quiera llevar esta idea más allá y tener twigs que integren dos características antes de fusionarlas en otro lugar, incluida la twig de integración global, es decir, tienen múltiples niveles de integración. Por supuesto, esto generalmente no es una situación deseable, pero es posible que no pueda evitarlo, y los conflictos resultantes pueden ser mucho más fáciles de resolver si es generoso con las twigs de integración.