Node:Fusión de cambios desde las ramas al tronco, Next:Fusiones múltiples, Previous:Conceptos básicos sobre ramas, Up:Ramas
Ahora que hemos aplicado la corrección del fallo a la rama, sincronicemos
la copia de trabajo con la revisiones más recientes presentes en el tronco
y veamos si también allí es necesaria la corrección. Vamos a obtener la
copia de trabajo desde la rama empleando "update -A" (en este aspecto, las
marcas de rama son como cualquier otra propiedad pegadiza) y entonces ver
las diferencias respecto a la rama que acabamos de dejar:
floss$ cvs -q update -d -A U hello.c U b-subdir/random.c floss$ cvs -q diff -c -r Release-1999_05_01-bugfixes Index: hello.c =================================================================== RCS file: /usr/local/cvs/miproyecto/hello.c,v retrieving revision 1.5.2.1 retrieving revision 1.6 diff -c -r1.5.2.1 -r1.6 *** hello.c 1999/05/05 00:15:07 1.5.2.1 --- hello.c 1999/05/04 20:19:16 1.6 *************** *** 4,9 **** main () { printf ("¡Hola, mundo!\n"); ! printf ("entre el saludo y la despedida\n"); printf ("¡Adiós, mundo!\n"); } --- 4,10 -- main () { printf ("¡Hola, mundo!\n"); ! printf ("entre hola y adiós\n"); printf ("¡Adiós, mundo!\n"); + /* un comentario en la última línea */ } Index: b-subdir/random.c =================================================================== RCS file: /usr/local/cvs/miproyecto/b-subdir/random.c,v retrieving revision 1.2.2.1 retrieving revision 1.2 diff -c -r1.2.2.1 -r1.2 *** b-subdir/random.c 1999/05/05 00:15:07 1.2.2.1 --- b-subdir/random.c 1999/04/19 06:35:27 1.2 *************** *** 4,8 **** void main () { ! printf ("Un número aleatorio.\n"); } --- 4,8 -- void main () { ! printf ("un número aleatorio\n"); } floss$
El comando "diff" muestra que hay una línea que difiere en la revisión en rama de hello.c, y que la revisión del tronco de este fichero tiene un comentario cerca del final que la revisión de la rama no tiene. Mientras, en random.c, la revisión en la rama tiene una "U" mayúscula y un punto, mientras que en la revisión presente en el tronco no aparece esto.
Para fusionar los cambios de una rama con la actual copia de trabajo,
haga una actualización con la opción -j (la misma j de "juntar" que
utilizamos anteriormente para revertir un fichero a una revisión más
antigua):
floss$ cvs -q update -d -j Release-1999_05_01-bugfixes RCS file: /usr/local/cvs/miproyecto/hello.c,v retrieving revision 1.5 retrieving revision 1.5.2.1 Merging differences between 1.5 and 1.5.2.1 into hello.c RCS file: /usr/local/cvs/miproyecto/b-subdir/random.c,v retrieving revision 1.2 retrieving revision 1.2.2.1 Merging differences between 1.2 and 1.2.2.1 into random.c floss$ cvs -q update M hello.c M b-subdir/random.c floss$ cvs -q ci -m "fusión con la rama Release-1999_05_01-bugfixes" Checking in hello.c; /usr/local/cvs/miproyecto/hello.c,v <- hello.c new revision: 1.7; previous revision: 1.6 done Checking in b-subdir/random.c; /usr/local/cvs/miproyecto/b-subdir/random.c,v <- random.c new revision: 1.3; previous revision: 1.2 done floss$
Este ejemplo toma los cambios habidos desde la raíz de la rama hasta su extremo final y más reciente, y los fusiona con la copia de trabajo actual, que a partir de ese momento mostrará esas mismas modificaciones como si sus ficheros hubieran sido editados a mano para llevarlos a ese estado. Los cambios son entonces aplicados al tronco, puesto que nada había cambiado en el repositorio cuando una copia de trabajo sufrió un proceso de fusión.
Si bien en este ejemplo no se han producido conflictos, es bastante posible (e incluso probable) que hubiera algunos en una fusión hecha en un proyecto real, en cuyo caso estos conflictos tendrían que resolverse igual que cualquier otro conflicto, para a continuación poder aplicar los cambios.