2009-01-01 12 views
7

Un escenario común cuando se usa el control de código fuente es tener una rama de desarrollo junto con las ramas de versión versionada. Usamos CVS, con HEAD como la rama de desarrollo y una rama llamada p. release-6-2 para la versión actual de un producto.Forma práctica de confirmar los cambios en el control de origen en varias ramas

El desarrollo de nuevas funciones entra solo en la rama de desarrollo, pero a veces las correcciones de errores deben verificarse tanto en la rama de desarrollo como en la rama de la versión actual. Esto puede ser bastante tedioso a veces, entonces estoy buscando formas prácticas de lograr esto.

Cuando un archivo que se va a enviar está sincronizado en las dos ramas, estoy en particular buscando una solución rápida de "compromiso con estas ramas".

(Usamos CVS como nuestro sistema de control de fuente, por lo que cualquier respuesta específica de CVS es agradable. Sin embargo, también es interesante ver si otros sistemas de control de origen pueden ofrecer una mejor manera. En el lado del cliente, utilizamos Eclipse , así que las soluciones de Eclipse son buenas. Pero si tiene una solución que no es Eclipse, también está bien.)

Respuesta

9

Aplique su solución a la rama de versión más antigua requerida. A continuación, combine el cambio en la siguiente rama de publicación, y así sucesivamente hasta que se fusione desde la última rama de publicación hasta la CABEZA.

Supongamos que la versión más antigua de su producto es 1.0 y también tiene versiones 1.1 y 1.5. Las nuevas funciones para la próxima versión se están agregando al HEAD. Si se encuentra un error en 1.0, aplica la corrección a la rama 1.0. Fusionar de 1.0 a la rama 1.1. Combina desde 1.1 hasta la rama 1.5, y finalmente fusiona desde la rama 1.5 hasta la CABEZA.

La fusión de una rama a otra es mejor que aplicar la corrección manualmente a cada rama.

Con CVS, debe mantener un registro de las versiones fusionadas, para que no incluya las mismas revisiones cuando realice la siguiente combinación.

Si cambia para usar Subversion, es más fácil fusionarse de rama en rama. La herramienta de subversión de Eclipse hará un seguimiento de las revisiones que ha fusionado anteriormente, simplificando enormemente la tarea de realizar fusiones repetidas entre dos ramas.

Cambiar a Subversion desde CVS es fácil (ish). No serás el primero en hacer tal movimiento.

4

Como dijo awalshe, es mejor fusionarse entre sucursales. Para cereza recoger una fusión, el método descrito en Pragmatic Version Control using CVS es muy buena:

En la rama - tag (PRE_FOO) antes del cambio, realice los cambios y comprometerse, etiqueta después del cambio (POST_FOO). Luego, en el tronco, se fusionan con las etiquetas:

cvs up -j PRE_FOO -j POST_FOO 

La fusión entre las ramas es mucho más fácil y más seguro en el SVN, y es trivial para convertir todo el historial de CVS a SVN - ver cvs2svn. Debería usar SVN 1.5 o, con versiones anteriores de SVN, svnmerge.

Cuestiones relacionadas