Ejemplo 3 - Chocamos

Si bien si somos ordenados al trabajar no deberia darse comunmente, los conflictos entre merges son un tema muy importante porque si no son manejados correctamente pueden acarrear serios problemas en el repositorio.
Veamos como generar uno simple, y como corregirlo.

Vamos a arrancar con un repositorio base del cual hacemos get para obtener dos repositorios independientes, en los cuales realizamos cambios de forma aislada.

Partimos de una base comun; mostramos los cambios
# cd base
# darcs chan
Wed May 18 02:57:06 ART 2005  Base <base@ej.com.ar>
  * Agregamos el archivo inicial.
Mostramos un poco del archivo "cancion"
# cat cancion
Tú surgías desde el Cono Sur
y venías desde antes,
con el amor al mundo bien adentro.
Fuk unx kstrkllx quk tk puso xquí
y tk hizo dk kstk pukblo.
Dk grxtitud nxcikron muchos hombrks
quk iguxl quk tú,
no qukríxn quk tk fukrxs
y son otros desde entonces.
[...]
# cd ..
#
Hacemos un get de base, creando un nuevo repo A
# darcs get base A
Copying patch 1 of 1... done!
Finished getting.
#
Y ahora creamos B
# darcs get base B
Copying patch 1 of 1... done!
Finished getting.
#
Tenemos tres repos iguales, vamos a hacer un cambio en A y a
arreglar un poco el archivo de arriba.
# cd A
# vi cancion
Uno de los problemas con el archivo es que algunas 'a's estan
cambiadas por 'x's, editamos para arreglar eso; y luego hacemos un record
# darcs record
[...]
# darcs changes --last=1
Wed May 18 03:01:42 ART 2005  Fulano A <a@fulano.com.ar>
  * Arreglar la letra A.
# cd ..
#
Vamos ahora a hacer un cambio en B.
# cd B
# vi cancion
Como antes, arreglamos "cancion", cambiando 'k's por 'e's
# darcs record
[...]
# darcs changes --last=1
Wed May 18 03:08:00 ART 2005  Fulano B <b@fulano.com.ar>
  * Arreglar la letra E.
# cd ..
#
Miremos un poco como estan los archivos hasta ahora.
El archivo base
# cat base/cancion
Tú surgías desde el Cono Sur
y venías desde antes,
con el amor al mundo bien adentro.
Fuk unx kstrkllx quk tk puso xquí
y tk hizo dk kstk pukblo.
Dk grxtitud nxcikron muchos hombrks
quk iguxl quk tú,
no qukríxn quk tk fukrxs
y son otros desde entonces.
[...]
#
El archivo del repositorio A
# cat A/cancion
Tú surgías desde el Cono Sur
y venías desde antes,
con el amor al mundo bien adentro.
Fuk una kstrklla quk tk puso aquí
y tk hizo dk kstk pukblo.
Dk gratitud nacikron muchos hombrks
quk igual quk tú,
no qukrían quk tk fukras
y son otros desde entonces.
[...]
#
El archivo del repositorio B
# cat B/cancion
Tú surgías desde el Cono Sur
y venías desde antes,
con el amor al mundo bien adentro.
Fue unx estrellx que te puso xquí
y te hizo de este pueblo.
De grxtitud nxcieron muchos hombres
que iguxl que tú,
no queríxn que te fuerxs
y son otros desde entonces.
[...]
#
Vamos a tratar de incorporar los cambios de B en A.
# cd A
# darcs pull ../B
Wed May 18 03:08:00 ART 2005  Fulano B <b@fulano.com.ar>
  * Arreglar la letra E.
Shall I pull this patch? (1/1) [ynWvxqadjk], or ? for help: y
We have conflicts in the following files:
./cancion
Finished pulling and applying.
#
Como vemos, nos dijo que habia conflictos en el archivo. Esto es esperable, dado que darcs solo no puede resolver los cambios pues afectan a las mismas lineas de los archivos, y no hay una forma en la que pueda aplicar los cambios sin garantizar que no se generan problemas.

Por eso nos avisa, para que nosotros "conciliemos" los dos cambios y dejemos una version valida. Entonces vemos que hay en el archivo con conflictos, y lo editamos para dejar una version definitiva.

# cat cancion
Tú surgías desde el Cono Sur
y venías desde antes,
con el amor al mundo bien adentro.
v v v v v v v
Fue unx estrellx que te puso xquí
y te hizo de este pueblo.
De grxtitud nxcieron muchos hombres
que iguxl que tú,
no queríxn que te fuerxs
*************
Fuk una kstrklla quk tk puso aquí
y tk hizo dk kstk pukblo.
Dk gratitud nacikron muchos hombrks
quk igual quk tú,
no qukrían quk tk fukras
^ ^ ^ ^ ^ ^ ^
y son otros desde entonces.
[...]
#
Nos encierra entre "v v v v" y "^ ^ ^ ^" las dos "versiones",
una de cada cambio, y espera que nosotros dejemos una definitiva, para lo cual
editamos. En este caso tenemos que hacer varios reemplazos a mano para que
quede una version completa.
# vi cancion
# cat cancion
Tú surgías desde el Cono Sur
y venías desde antes,
con el amor al mundo bien adentro.
Fue una estrella que te puso aquí
y te hizo de este pueblo.
De gratitud nacieron muchos hombres
que igual que tú,
no querían que te fueras
y son otros desde entonces.
[...]
#
Entonces hacemos un record, para grabar este patch
"conciliador"
# darcs record
[...]
#
Vemos todo el historial de cambios
# darcs changes
Wed May 18 03:21:22 ART 2005  Fulano A <a@fulano.com.ar>
  * Conciliamos el conflicto.

Wed May 18 03:08:00 ART 2005  Fulano B <b@fulano.com.ar>
  * Arreglar la letra E.

Wed May 18 03:01:42 ART 2005  Fulano A <a@fulano.com.ar>
  * Arreglar la letra A.

Wed May 18 02:57:06 ART 2005  Base <base@ej.com.ar>
  * Agregamos el archivo inicial.
#