Node:La Aproximación de la Cola de Milano -- Fusionar dentro y fuera de la rama principal, Next:, Previous:Fusionar repetidamente con la rama principal, Up:Salir del limbo (Cómo trabajar con derivaciones y sobrevivir)



La Aproximación de la Cola de Milano - Fusionar dentro y fuera de la rama principal

Fusionar repetidamente de derivación a tronco es bueno para la gente del tronco ya que ven todos sus cambios y los de la derivación. Sin embargo el desarrollador de la derivación no obtiene nunca los cambios producidos en el tronco.

Para permitir esto el desarrollador de la derivación debe realizar un paso extra cuando tenga ganas de hacer una fusión de los cambios más recientes del tronco y resolver los inevitables conflictos que surgan:

paste$ cvs update -j CABEZA

La etiqueta especial reservada CABEZA señala el estado actual del tronco. La orden anterior fusiona en el tronco los cambios entre la raiz de la actual derivación (Exotic_Greetings-branch) y la revisión más alta de cada fichero del tronco. Por supuesto qsmith tiene que etiquetar de nuevo después de hacer esto para que los desarrolladores del tronco eviten accidentalmente fusionar sus propios cambios cuando intenten conseguir los de qsmith.

De la misma manera el desarrollador de la derivación puede usar las etiquetas de fusión del tronco como límites, permitinedo a la derivación fusionar exactamente aquellos cambios entre la última fusión y el estado actual del tronco (de la misma manera que el tronco fusiona). Por ejemplo, supongamos que jrandom ha hecho algunos cambios a hello.c después de fusionar la derivación:

floss$ emacs hello.c
 ...
floss$ cvs ci -m "clarify algorithm" hello.c
Checking in hello.c;
/usr/local/newrepos/myproj/hello.c,v  <--  hello.c
new revision: 1.22; previous revision: 1.21
done
floss$

Después puede qsmith fusionar esos cambios en el tronco, entregar, y, por supuesto, etiquetar.

paste$ cvs -q update -j merged-Exotic_Greetings-1 -j HEAD
RCS file: /usr/local/newrepos/myproj/hello.c,v
retrieving revision 1.21
retrieving revision 1.22
Merging differences between 1.21 and 1.22 into hello.c
paste$ cvs -q update
M hello.c
paste$ cvs -q ci -m "merged trunk, from merged-Exotic_Greetings-1 to HEAD"
Checking in hello.c;
/usr/local/newrepos/myproj/hello.c,v  <--  hello.c
new revision: 1.21.2.1; previous revision: 1.21
done
paste$ cvs -q tag merged-merged-Exotic_Greetings-1
T README.txt
T foo.gif
T hello.c
T a-subdir/whatever.c
T a-subdir/subsubdir/fish.c
T b-subdir/random.c
paste$

Observe que a jrandom no etiquetó después de entregar los cambios a hello.c pero si qsmith. El principio utilizado aquí es que aunque usted no necesita etiquetar después de hacer cualquier pequeno cambio si debería hacerlo después de fusionar o entregar su línea de desarrollo a un estado que permita la fusión. De este modo otras personas, quizá en otras derivaciones tienen un punto de referencia en el cual basarse para sus propias fusiones.