Differences between revisions 5 and 8 (spanning 3 versions)
Revision 5 as of 2005-08-26 01:31:23
Size: 3175
Editor: waste
Comment:
Revision 8 as of 2008-01-15 16:26:12
Size: 3167
Editor: abuehl
Comment: cat
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
  $ hg clone hola-mio hola-mio-no-cvs
 $ hg clone hola-mio hola-mio-no-cvs
Line 18: Line 17:
Line 24: Line 22:
  {
  printf("hello, world!\n");
  printf("sure am glad I'm not using CVS!\n");
      return 0;
  }
 {
     printf("hello, world!\n");
     printf("sure am glad I'm not using CVS!\n");
     return 0;
 }
Line 35: Line 32:
Line 41: Line 37:
  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)
 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)
Line 54: Line 49:
  this update spans a branch affecting the following files:
   hello.c (resolve)
  aborting update spanning branches!
  (use update -m to perform a branch merge)
 this update spans a branch affecting the following files:
  hello.c (resolve)
 aborting update spanning branches!
 (use update -m to perform a branch merge)
Line 64: Line 58:
Line 71: Line 64:
----
CategorySpanish

SpanishTutorial - fusionando cambios conflictivos

Ya hemos aprendido cómo realizar fusiones de código simples en SpanishTutorialMerge.

["Mercurial"] es capaz de manejar también casos de fusión de código más complejos. No es tan raro el caso de que dos personas editen exactamente las mismas líneas de un fichero, y entonces haya que decidir qué hacer ¿cuál de los dos cambios predominará?. Cuando se dan estos casos los denominaremos conflictos; cuando se ha decidido qué hacer al darse un conflicto, se dice que se ha resuelto el conflicto.

Vamos a crear una situación artificial de conflicto. Comenzamos haciendo un clon de hola-mio:

 $ cd ..
 $ hg clone hola-mio hola-mio-no-cvs

Ahora añadimos una nueva línea de salida en hello.c:

 $ cd hola-mio-no-cvs

Cambiaremos main para que ponga lo que sigue:

 int main(int argc, char **argv)
 {
     printf("hello, world!\n");
     printf("sure am glad I'm not using CVS!\n");
     return 0;
 }

Y hacemos un ["Commit"] del cambio:

 $ hg commit -t'Doy gracias de esquivar las balas'

Recordar que en SpanishTutorialFirstChange creamos un ChangeSet en ["hola-mio-nueva-salida"] quetambién añadía una segunda línea a la salida. ¿Que ocurrirá cuando tratemos de propagar ese cambio aquí?

 $ 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)

Por ahora todo bien. Tratemos de hacer la actualización de ficheros en el directorio de trabajo (["Update"]).

 $ 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)

Al igual que en SpanishTutorialMerge, tenemos que ejecutar update -m. Pero aquí las cosas cambian. Ahora ["Mercurial"] no puede fusionar automáticamente, porque la misma línea del mismo fichero de código se ha modificado de manera distinta en cada ChangeSet (el que acabamos de introducir con un ["Commit"], y el que acabamos de propagar mediante ["Pull"]).

 $ hg update -m

En este punto lo que ocurra puede depender de la suerte. Si tenemos suerte, y tenemos un programa para fusionar (["MergeProgram"]) instalado, se pasará a ejecutar dicho programa. En él podremos ver los conflictos que hay entre los distintos cambios y decidir cómo resolverlos.

Si no tenemos suerte, y no tenemos un programa de fusionado instalado (["MergeProgram"]), pasaremos a nuestro editor de texto, el cual mostrará el fichero que necesitamos fusionar. Hacer ésto a mano esmuy proclive a errores además de tedioso. Es mejor salir del editor y usar el comando hg undo para invertir el efecto de la propagación de cambios con ["Pull"], y luego instalar un programa para gestionar las fusiones (["MergeProgram"]) y probar de nuevo.

Ahora continuaremos en SpanishTutorialConclusion.


CategorySpanish

SpanishTutorialConflict (last edited 2010-05-10 15:57:37 by LuisMunoz)