Node:La Aproximación de la Cola de Milano -- Fusionar dentro y fuera de la rama principal, Next:La Aproximación del Pez Volador -- Una forma más simple de hacerlo, Previous:Fusionar repetidamente con la rama principal, Up:Salir del limbo (Cómo trabajar con derivaciones y sobrevivir)
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.