SpanishTutorial - fusionando cambios

En SpanishTutorialExport aprendimos como compartir un cambio con otra persona.

Ahora nos pondremos en el lugar de la otra persona, suponiendo que hemos recibido un cambio que queremos fusionar con nuestro código.

Primero debemos crear un lugar para fusionar. Lo que hacemos es clonar de nuevo el repositorio hola-mio:

 $ cd ..
 $ hg clone hola-mio hola-mio-desc

Ahora vamos a darle a hello.c una descripción en la parte de comentarios del código.

 $ cd hola-mio-desc
 $ vi hello.c

Cambiaremos la segunda línea de ésto:

 * hello.c

A esto:

 * hello.c - hello, world

Guardamos y cerramos el editor, y hacemos un Commit de nuestros cambios. Esta vez ahorraremos un poco de tiempo usando la opción -m del comando commit, para librarnos de que arranque otra vez el editor para escribir el comentario:

 $ hg commit -m'Añadida descripción en hello.c'

En este punto hemos hecho un cambio a hello.c en el repositorio hola-mio-nueva-salida, y otro cambio a hola.c en el repositorio hola-mio-desc. ¿Habrá algún problema cuando querramos propagar los cambios de un repositorio hacia el otro?

La cosa funcionará perfectamente. Mientras aún estamos en hola-mio-desc, vamos a propagar los cambios desde hola-mio-nueva-salida y veremos qué ocurre:

 $ hg pull ../hola-mio-nueva-salida
 pulling from ../hola-mio-nueva-salida/
 searching for changes
 adding changesets
 adding manifests
 adding file revisions
 modified 1 files, added 1 changesets and 1 new revisions
 (run 'hg update' to get a working copy)

¡Esto se parece a la salida del comando pull en SpanishTutorialShareChange! Así que todo lo que tenemos que hacer ahora es una actualización (Update) ¿de acuerdo?

 $ hg update
 this update spans a branch affecting the following files:
  hello.c (resolve)
 aborting update spanning branches!
 (use update -m to perform a branch merge)

Algo ha ocurrido. Mercurial nos está diciendo que debemos fusionar (Merge) los cambios hechos en cada repositorio. Parece que suena difícil ¿no?

Realmente es muy fácil. Simplemente tenemos que seguir las instrucciones indicadas:

 $ hg update -m
 merging hello.c

Y ya está todo hecho; Mercurial fue capaz de manejar el fusionado de código de manera completamente automática. Si ahora miramos en hello.c, veremos que contieneambos cambios, tanto de hola-mio-nueva-salida como los cambios de hola-mio-desc.

La mayor parte del tiempo, cuando se está trabajando con cambios hechos por otra persona, esta es la única clase de fusión de código que se necesitará realizar.

Continuemos y aprendamos ahora como actuar ante situaciones en donde se han realizado cambios que presentan conflictos, en SpanishTutorialConflict.


CategorySpanish

SpanishTutorialMerge (last edited 2010-05-23 17:00:16 by RobertoRodriguez)