Como hacer un merge de distintas ramas mercurial (o repositorios hg)

Si no está usando Mercurial como sistema de control de versiones, este artículo no es para Usted.

Cuando uno empieza a usar Mercurial de forma un poco más avanzada, a veces surge la necesidad de hacer un merge (mezclar) dos repositorios, o dos ramas, del controlador de versiones. Aquí les indico un buen procedimiento para hacerlo. Pero ante todo, es importante configurar Mercurial para que les de una buena herramienta para hacer el merge en caso hayan conflictos. Para esto, se puede editar el fichero /etc/mercurial/hgrc.d/mergetools.rc y darle algo parecido (en el caso de kdiff3) a:

[merge-tools]
kdiff3.args=–auto –L1 base –L2 local –L3 other $base $local $other -o $output
kdiff3.regkey=SoftwareKDiff3
kdiff3.regappend=kdiff3.exe
kdiff3.fixeol=True
kdiff3.gui=True

  1. haga un clone local de la rama que se tiene que a actualizar con los cambios de la otra: hg clone https://sources.example.com/public/tronco
  2. entre a la carpeta (local) de la rama: cd tronco
  3. haga un pull de la rama que lleva las modificaciones: hg pull https://sources.example.com/public/rama-c
  4. haga un merge: hg merge
  5. posiblemente revise los
  6. haga un commit de los cambios: hg commit -m “merge with rama-c”
  7. haga un push (una vez confirmados los cambios)