Ahora estamos en el proceso de cambiar de svn a git (después de un año dedicado a convencer a la gente, ¡sí!) En mi empresa.
Hasta ahora, esto es para mejor, pero hay una pequeña cosa que tenemos actualmente en nuestro flujo de trabajo que no puedo encontrar un buen equivalente también.
Actualmente, todos nuestros desarrolladores trabajan en master. Una vez cada trimestre, ramificamos master en Xx branch, que más tarde se convertirá en nuestro último lanzamiento. Esto significa que nuestro repositorio svn se ve así:
- maletero
- ramas
- 3.8
- 4.1
- 4.2 4.2
- ...
Realmente no usamos etiquetas.
De vez en cuando, se descubre una corrección de errores urgente.
La forma actual de hacerlo es:
- Arreglarlo en master
- SVN fusiona el rango relevante de confirmaciones de nuevo en las ramas relevantes (Tal vez nuestra última versión, tal vez más).
Estamos en la industria espacial, por lo que nuestras sucursales tienen una larga vida y el proceso de actualización del cliente es bastante largo, por lo que hemos trabajado así hasta ahora.
Ahora, ¿cómo sería un buen equivalente en git?
Hasta ahora, he tratado de corregir el error en una rama generada desde master, y luego fusionar esta rama en master y en 4.3 (por ejemplo). La cosa es que la rama de revisión contiene el historial maestro, y todas las confirmaciones entre maestro y 4.3 también se fusionan, lo que no queremos.
Cosas que se me ocurren hasta ahora:
- He mirado el exitoso método Git Workflow , y su solución es corregir el error en la rama de lanzamiento y fusionarlo de nuevo en lugar de al revés. Esto podría funcionar en nuestro caso, pero sería bastante engorroso porque requeriría que ya conozcamos la rama más antigua en la que queremos corregir el error antes de solucionarlo.
- Otra solución es arreglarlo en master, y luego elegir los commits (como lo hacemos hoy para la fusión de svn). Lo molesto aquí es que en este caso perdemos el historial de lo que se ha fusionado en el pasado, ya que las selecciones de cereza parecen nuevos compromisos y perdemos la relación.
Entonces, ¿cuál es la "buena" forma de hacerlo? ¿Deberíamos arreglar los commits en la historia, o elegir Cherry y hacer un seguimiento manual de lo que se ha fusionado, o incluso algo más?
Si tiene poca experiencia en producción con git, estoy seguro de que puede haber perdido algo.