Al migrar de una cosa a otra, solo hay dos cosas que debe definir:
- Cual es tu objetivo
- Cómo llegar (el plan de migración)
La primera parte es, por desgracia, a menudo se pasa por alto o forma demasiado vaga. No puedes simplemente decir que lo que tienes es un desastre y quieres organizarlo. ¿Qué significaría eso? Todo el mundo tendría una interpretación diferente (aka: cada dev piensa que su o su manera de hacer las cosas es la mejor).
Lo más probable es que todas las sucursales que tienes estén sirviendo o hayan cumplido un propósito. Sin un proceso objetivo claramente definido, las personas seguirán haciendo lo que les funcione de la manera que más les convenga (y con razón).
Por ejemplo, su objetivo debe definirse tan claramente como Vincent Driessen definió su "modelo de ramificación Git exitoso" . Si observa este modelo, es muy preciso: dice dónde debería estar el código estable y dónde deberían desarrollarse las características inestables. También dice cómo, y cuándo, bifurcar, actualizar y fusionar. Usted sabe para qué sirve cada rama y qué hacer con ellas. Usamos una variación de lo que propuso Vincent y nuestra variación se define en nuestra wiki.
Lo importante es que todo el equipo comprenda y acuerde un objetivo. Puede valer la pena recordarle a la gente que no está buscando su modelo de ramificación favorito personal, sino un modelo en el que todos los miembros del equipo puedan ponerse de acuerdo y usarlo fácilmente.
Una vez que tenga su objetivo, podrá elaborar su plan de migración. Ese plan puede ser tan largo o tan corto como desee. He visto tal modelo de ramificación impuesto de la noche a la mañana; en otros lugares, se realizó durante 2 o 3 sprints. No me importa mucho, siempre que estemos mejorando.
Puede comenzar con las ramas "más grandes" o más importantes. Por ejemplo: "a partir de ahora, el maestro siempre debe estar en un estado para ser implementado en prod y la rama de desarrollo siempre debe compilar" (o cualesquiera que sean sus reglas). Luego, aplique ramas de versión (lanzamiento). Luego, haga cumplir las ramas de características. Después de eso, imponga un congelamiento de código en la rama de la versión, si tiene sentido.
DevOps se trata de comunicación, apertura y eficiencia. Estos conceptos deben tenerse en cuenta y comunicarse durante todo el proceso.
Sugeriría invitar a algunas personas fuera del equipo de desarrollo a la reunión del proceso como observadores. Ops o mandos intermedios pueden tener una o dos cosas que decir sobre su modelo. Deben priorizarse las necesidades de los desarrolladores, pero si el modelo de ramificación es imposible de alinear con la forma en que se gestionan las cosas, sería mejor saberlo ahora y no en un mes o dos.
Si tienes equipos realmente grandes, intenta incluir a todos de todos modos. Con equipos muy grandes, terminarás con dos o tres reuniones de todos modos. Por lo tanto, invite a los líderes de equipo en la sala, pero tenga una transmisión por Internet disponible y deje que todos lo sepan. Si alguien tiene una sugerencia o inquietud, podrá expresarla al líder de su equipo y, si es válida, se abordará en la segunda o tercera reunión.