Un colega mío me dijo que está pensando en hacer nuestro servidor de CI para compromete revert que no pasaron la construcción, por lo que el HEADen masteres siempre estable (como en la acumulación de pasar por lo menos).
¿Es esta una práctica recomendada o puede ser más problemático que simplemente dejarlo masterroto hasta que el desarrollador lo arregle?
Mi opinión es que revertir el commit hará más compleja la tarea de leer el commit y el arreglo (el desarrollador tendrá que revertir el revert y luego confirmar el arreglo, lo que también desordenará git log) y deberíamos dejar el commit y luego confirmar el fijar. Aunque veo algunas ventajas en tener masterestabilidad, esta reversión de confirmaciones fallidas no me convence.
editar: No importa si es mastero cualquier otra rama de desarrollo, pero la pregunta sigue siendo la misma: ¿debería el sistema CI revertir una confirmación que falló la compilación?
otra edición (larga): Ok, la estamos usando gitde una manera extraña. Creemos que el concepto de sucursales va en contra de CI real, porque comprometerse con una sucursal lo aísla de los otros desarrolladores y sus cambios, y agrega tiempo cuando tiene que reintegrar su sucursal y lidiar con posibles conflictos. Si todos se comprometen con masterestos conflictos, se reducen al mínimo y cada confirmación pasa todas las pruebas.
Por supuesto, esto lo obliga a presionar solo estable (o rompe la compilación) y programar con más cuidado para no romper la compatibilidad con versiones anteriores o alternar características al introducir nuevas características.
Hay compensaciones cuando se hace CI de esta o de esa manera, pero eso está fuera del alcance de la pregunta (vea la pregunta relacionada para esto). Si lo prefiere, puedo reformular la pregunta: un pequeño equipo de desarrolladores trabajan juntos en una rama de características. Si un desarrollador comete algo que rompe la compilación para esa rama, ¿debería el sistema de CI revertir el compromiso o no?
masterpara empezar. Para eso se utilizan las ramas de desarrollo y características. Esos cambios van entonces en algo así como una rama de integración donde puedes probar si todas las nuevas características de varios desarrolladores funcionarán juntas y solo si esto se prueba puede entrar en master. O al menos ese es un posible flujo de trabajo.