Tuve que separar un número selectos de archivos de un repositorio y de ellos crear uno nuevo. Me interesaba conservar el historial de cambios; y me encontré una página que decía que se podía hacer con hg convert.
Mi anterior experiencia con hg convert había sido breve y sin éxito: había querido mover un repositorio CVS a Mercurial. Pero en aquella ocasión el problema, si mal no recuerdo era que hg no encontraba el comando cvs.exe (por alguna razón cvsnt.exe no era aceptable).
Tiempo después lo logré en Linux (ver abajo).
Antes de empezar, se debe habilitar la extensión. En tu archivo hgrc, debes poner:
[extensions]convert =Pero para convertir de Mercurial a Mercurial, funcionó tal y como dice en la página (utilizando el parámetro filemap); pero con unas pequeñas modificaciones...
.. ya que por alguna extraña razón, tuve que poner cada archivo individualmente en una línea. Es decir que no pude hacer:
include "Queue.c Queue.h strf_utils.c strf_utils.h stdop.h"(no me dejó hacer un update después) .. sino que tuve que poner lo siguiente:
include Queue.cinclude Queue.hinclude strf_utils.cinclude strf_utils.hinclude stdop.hY ya con eso si pude convertir el repositorio; ejecutando:
hg convert --filemap mapa.txt NombreRepoActual NombreDest... remarcando que para que funcione, hay que hacer un update después de la conversión.
hg convert para extraer los 4 archivos que me interesaba mover en un repositorio nuevo.hg pull -f (donde -f indica que se quiere forzar).hg merge, para que incluyera los cambios de ambos repositorios (de lo contrario borra los archivos ya existentes en el destino).hg commit; para que quedara registrado el merge.La imágen a la derecha muestra la gráfica de cambios (en el TortoiseHg Workbench) después de haber hecho el merge.
Tiempo después intenté de nuevo convertir de CVS a Mercurial; pero en esta ocasión en Linux.
Me topé con 2 errores:
Primero, que $CVSROOT apuntaba a /var/cvs; pero en realidad era un link a /otra/localidad. Bastó con cambiar el checkout de CVS a algo como:
cvs -d:ext:usuario@servidor:/otra/localidad co MiProyectoEl segundo problema fue que al hacer el hg convert MiProyecto, se trababa leyendo el historial. No supe a ciencia cierta cómo es que finalmente comenzó; pero lo interrumpí y reinicié varias veces. Afortunadamente, hg convert reanuda leyendo el historial desde donde se quedó.
De nueva cuenta: hay que hacer un update después de la conversión.