en el momento en que usamos Subversion para el control de código fuente, pero todo el trabajo de fusión para nuestras versiones se realiza manualmente. Lanzamos varias veces al año, así que crea una rama para cada lanzamiento. Todo el trabajo de las ramas anteriores debe llegar a los posteriores. El trabajo en las sucursales posteriores no debe pasar a las anteriores (esto es en nuestros contratos). Creo que esto se conoce como el Modelo Promocional.Usando Subversion con el modelo promocional
Creo que el siguiente diagrama ilustra mejor nuestro flujo de trabajo deseado, con ramas que se crean cada vez que el trabajo comienza en una nueva versión y cambios que van de las ramas anteriores a las posteriores.
| 1 | |\ | \ | 2 3 | |\| 4 | | |\ 5 | \ | 6 | | | 7 |\|\| | |\| 8 9 |\ | | | \ |\| | 10 x |\| | | |\| | | | a b c d
- ¿Sería este modelo de trabajo sin problemas usando Subversion a pesar de la falta de un tronco significativa?
- ¿El seguimiento de fusión automatizado funcionaría para las actualizaciones de las sucursales anteriores a las posteriores?
- ¿Sería correcto cerrar/eliminar/ignorar una rama (en este ejemplo, liberar la rama 'a') sin reintegrar?
- ¿Sería correcto crear ramas de características fuera de cada rama de release, y uniría el trabajo de seguimiento para estas? (Seguirían el modelo de creación/fusión/reintegración recomendado).
Editar - añadir más información.
El siguiente diagrama ilustra el motivo por el que el modelo de Troncal inestable tradicional podría no ser adecuado. Las características para cada versión no se completan necesariamente en orden de lanzamiento (algunos clientes pueden tardar en confirmar los requisitos). Queremos propagar los cambios de las ramas anteriores a las posteriores tan pronto como sea posible.
a | 1 | b|\ a | \ | 2 3 | | | 4 | b/|c | /5 | | | 6 7 | | b c a
En este caso, queremos característica 2 (terminado en rama a) en la rama B, pero como esto es una fusión de niño a los padres, y por lo tanto no es compatible con la subversión, que tendrá que ser hecho a mano. Del mismo modo, la característica 6 debería fusionarse manualmente dos veces. Anticipo que se trata de un proceso relativamente lento y propenso a errores en comparación con las fusiones de seguimiento automático.
Buena respuesta. La compensación que puedo ver es que en su modelo podría haber una necesidad de repetir fusiones, por ejemplo, una corrección de errores comprometida con el enlace troncal debe fusionarse con todas las ramas abiertas. Si uno de ellos se pierde, la corrección de errores se perderá de un lanzamiento. Con el modelo de promoción parecería que no hay ninguna posibilidad de perder estas correcciones, por lo tanto, requeriría menos trabajo manual. Sin embargo, parece que mi modelo se aleja tanto de la zona de confort de SVN que está desactivando las alarmas, por lo tanto, no me siento seguro arriesgando nuestro código fuente con él. Le pondré esto al equipo. ¡Gracias! –