¿Debo alguna vez tener twigs de características a largo ploop en Git Flow?

Estoy usando Git Flow con un equipo. Todos nos ramificamos del desarrollo de características y nos fusionamos de nuevo después de la revisión del código. Funciona bien para nosotros, sin embargo, ahora tenemos una característica que le tomará a un desarrollador completar durante un mes. Tendremos algunos lanzamientos durante este time.

Algunas preguntas para alimentar esto:

  • ¿Cómo debemos manejar esto?
  • ¿Deberíamos manejarlo de esta manera?
  • ¿O deberíamos cortar la function en requestes de fusión más pequeñas?
  • Si lo cortamos, y es un proyecto público, ¿cómo nos aseguramos de que las piezas de esta característica no afecten a las versiones en curso?
  • ¿Es realmente tan malo fusionarse en esta twig de características a largo ploop? Mis compañeros están preocupados de que sea antipatrón.
  • Si no nos fusionamos desarrollamos nuevamente en esta característica a largo ploop, ¿no podría haber consecuencias negativas cuando la function finalmente se complete?

Esto también es bastante común en mi lugar de trabajo. Trabajamos en un progtwig de lanzamiento semanal, por lo que las características nuevas de cada miércoles llegan a la producción. Debido a esto, casi siempre hay funciones a medio cocer y no lists para producción.

Entonces, con respecto a las sucursales a largo ploop, esto es lo que mejor funcionó para nosotros:

  • Desvincularse para la característica como normal ( feature-1 )
  • Con el corte de twig de feature-1 , el trabajo comienza normalmente.
  • Si la característica es lo suficientemente grande, divídala en subtareas más pequeñas. (Por ejemplo, Crear un service; Implementar service en el controller; etc.)
  • A continuación, bifurque la feature-1 para cada actualización incremental de la function ( sub-task-1 , sub-task-2 , etc.), volviendo a fusionarse en la feature-1 cuando se complete la subtarea. (Esto permite que feature-1 solo contenga código con todas las funciones)
  • Mientras que el desarrollo de la feature-1 y las subtareas progresan, es importante que a medida que se combinan las relaciones públicas en el develop , se restaure la twig de la feature-1 . De lo contrario, normalmente se generará un mega rebase al preparar la function PR.

Como notará, no hay mucha desviación de su flujo de trabajo normal, es más una cuestión de disciplina asegurar que el rebasamiento se haga a menudo y que el código a medias no lo haga develop .

Espero que esto ayude.

No puedo responder a sus preguntas desde una postura firme, pero puedo indicarle una publicación de blog sobre gitflow.

Observe la image cerca de la parte superior. Nota una característica para publicación futura (por lo tanto, una característica a largo ploop).

Esto me lleva a creer que este es un comportamiento apropiado que es necesario cuando la situación lo requiere.

En una compañía anterior, al less 1/3 de nuestras sucursales tenían una "larga duración" de al less 2 semanas o más (una twig que se desarrollaba durante un mes era un lugar bastante común). Usamos el patrón de gitflow para hacerlo también. Básicamente, trabajaríamos en la sucursal y periódicamente desarrollaríamos y networkingimensionaríamos nuestra sucursal en la parte superior. Esto es bastante similar a fusionar desarrollo en una twig de características que sé que se considera un antipatrón.

La verdadera key fue el mantenimiento de la sucursal y no dejar que se quede muy atrás. Las twigs viciadas son las más dolorosas de intentar y actualizar a veces. Es necesario tener en count si se tiene o no time para mantenerse al día con la twig, entre otras prioridades.

La configuration de testing / ambiente también es importante. Tener una twig de larga ejecución significa que es muy probable que sea una característica / cambios importantes, por lo que probablemente también se pruebe como tal. Si sus QA'ers (ya sea un equipo o usted mismo y otros desarrolladores) pueden probar la sucursal cuando está casi list en un entorno aislado, eso ayuda a una tonelada.