Acabamos de empezar a usar git para nuestro código de producción, y nos encontramos con un pequeño problema en nuestro flujo de trabajo. Necesitamos encontrar la forma de manejar las mejoras generales de código/reparaciones técnicas de deudas que surgen mientras trabajamos en una característica.Git feature branches y minor code improvements
El flujo de trabajo que hemos adoptado es utilizar 'develop' como la rama de integración principal y desarrollar todas las funciones en las ramas de características fuera de 'develop'. Cuando se completa una característica, el desarrollador crea una solicitud de extracción y todos la revisan para proporcionar comentarios antes de que se fusione de nuevo en su desarrollo. Esto parece estar funcionando muy bien.
El problema que tenemos es que durante el desarrollo de rutina en una función, el desarrollador puede terminar queriendo modificar/refactorizar algún código común para mejorar el sistema o eliminar alguna deuda técnica. Este cambio es valioso, pero no está directamente relacionado con la característica en desarrollo.
Según nuestro flujo de trabajo, realmente debería hacerse en una rama diferente que pase por su propia solicitud de extracción y revisión de código antes de entrar en desarrollo. Sin embargo, si los hacemos hacer esto, ¿cómo pueden obtener el cambio nuevamente en su rama de características mientras esperan que suceda la revisión completa del código y se desarrolle el código para fusionarse?
Las ideas que tenemos son:
1) cereza recoger los cambios de la rama 'refactorX' en nuestra rama de la característica. Continúa desarrollando y deja que git (con suerte) descubra cuándo nos fusionamos para desarrollar que ya tiene el cambio de la rama de refactorización.
2) Fusiona la rama 'refactorX' en nuestra rama de características y continúa el desarrollo. (nota: la ramificación desarrollada para 'refactorX' puede haber estado más adelante en la historia de desarrollo, entonces creemos que esto puede tener problemas)
3) Alguna otra opción más inteligente que aún no conocemos. :)
Lo que estamos buscando es una guía de mejores prácticas sobre cómo manejar esta parte del flujo de trabajo. Después de hablar más sobre esto, sabemos que surgirá con frecuencia y queremos encontrar una manera fácil y eficiente de manejarlo en nuestro flujo de trabajo.
¿Alguna recomendación?
La opción 2 se ve bien, ¿qué problemas imagina con ella? – fge
La opción 2 parece dudosa, porque está incorporando todos los cambios posteriores de 'desarrollo' en su rama de características cuando lo hace (como observa Allen). La opción 1 se ve bien para mí sin embargo. –
Otra preocupación con 1 y 2: No deseo que los cambios elegidos/fusionados en la rama de características se muestren en los diffs utilizados para la revisión del código de la solicitud de extracción. No puedo pensar en una buena manera de hacer que eso ocurra, aunque sin volver a basar. Y como se trata de una rama "pública" que se envía al repositorio central de la compañía, el rebase parece una "mala idea". – Allen