Recientemente tuvimos un problema por el cual la administración pospuso una función para nuestra aplicación web (registro automático) porque sentían que el inicio era demasiado "frío", pero querían que todas las otras funciones en las que habíamos estado trabajando se activaran.
El problema es que esta funcionalidad se había fusionado para desarrollarse cuando se terminó junto con todas las otras características que esperábamos lanzar en vivo en la próxima versión, por lo que no podríamos fusionar dev -> test -> master como solemos hacer.
¿Cómo podríamos haber evitado este problema?
project-management
git
gitflow
Steve
fuente
fuente
Respuestas:
Un enfoque es la característica que lo marca. Puede vivir en la base del código pero puede estar deshabilitado por la configuración.
Otra opción es realizar una confirmación de reversión que revierte la fusión de características para que ya no esté en desarrollo. Se puede crear una nueva rama que revierte la reversión, y se deja pendiente para fusionarse más tarde. Si está utilizando solicitudes de extracción de Github, puede hacerlo fácilmente con el botón "revertir fusión" en una solicitud de extracción fusionada.
fuente
Feature Toggling
, como lo llamó Doc Brown. Esto también nos permite probar la característica (o ausencia de ella) en entornos que no son de producción. A veces, estas funciones se suman a las funciones existentes, en cuyo caso deberíamos realizar pruebas unitarias para el conjunto de funciones antiguo y nuevo. Cada prueba unitaria solo establecería el indicador a lo que sea necesario para hacer la prueba actual.Desde la perspectiva del proceso, descubra:
Es más que probable que haya caídas en la comunicación en el camino. Es importante tener esto porque cuando no funciona, su (s) proceso (s) de desarrollo se basarán en interpretaciones falsas e incorrectas de los requisitos comerciales.
fuente
Olvídese por un momento del problema con su administración, e imagine que ya tenía la "función de registro automático" en su última versión de producción, profundamente integrada en su base de código. Ahora tiene el nuevo requisito de agregar un "interruptor de apagado" para el "registro automático". ¿Cómo manejarías esto en tu flujo de trabajo de Git?
Supongo que declararía "deshabilitar el registro automático por configuración" simplemente como una característica adicional (es solo una forma de alternancia de funciones ), por lo que esto debería integrarse sin problemas en su flujo de trabajo. Puede estimar el esfuerzo, si lo desea puede usar una rama de características para ello (o no, si no usa ramas de características para tales problemas). Y definitivamente puede usar el flujo habitual "fusionar dev -> prueba -> maestro" que describió.
Y esa es realmente la forma en que puede manejar esto en su situación actual. Desde el punto de vista del flujo de trabajo de git, no debería importar si la solicitud de cambio proviene de la administración para la versión 1.0, o si la solicitud de cambio es un nuevo deseo del cliente para la versión 2.0.
fuente
Este es el problema exacto que tengo con gitflow y el flujo de GitHub, y parece que con las aplicaciones web esto sucede a menudo, o más como la norma. Parece que resolvería este problema retroactivamente (mencionado anteriormente) o proactivamente (ejemplo a continuación).
He creado 'ramas de paquete' además de las ramas estándar de gitflow. El paquete consta de todas las características que están listas para uat / qa. Se crea una lista de características uat / qa. Estos se fusionan en el paquete temporal, y ese paquete se implementa en uat / qa. Cualquier corrección de errores ocurre en la rama de características original, y eso se vuelve a integrar en el paquete y se implementa. Esto separa la próxima versión y permite probar esas características juntas antes de que encuentren su camino hacia la rama de desarrollo. Las ramas aprobadas obtienen una solicitud de extracción para desarrollar, siguiendo el proceso de gitflow. Las funciones listas para prueba se pueden agregar o eliminar de la rama de paquete temporal y volver a implementar.
Los contras incluyen administrar la lista de paquetes y agregar otro tipo de rama; Sin embargo, además de la solución retro, que creo que es demasiado tarde, esta parece ser la solución más viable.
Con un complemento de GUI, podría ser óptimo marcar las ramas de características por implementación de paquete, teniendo en cuenta la automatización.
fuente