miércoles, 7 de septiembre de 2016

Pasando un repositorio mercurial a git

Desde la aparición de los repositorios distribuidos me posicioné más a favor de mercurial por aquello de estar programado en python y por haber un sitio web que permitía crear repositorios privados sin cobrar por ello. Al principio Bitbucket solo soportaba mercurial pero tenía una gran ventaja: se podian crear ilimitados repositorios privados.

Actualmente manejo más de una centena de repositorios, alguno de ellos de tipo git y he decidido el ir migrando poco a poco los repositorios a git, para así tener un entorno más homogéneo.

Investigando en Internet me he encontrado con una utilidad para hacer la migración más sencilla sin perder datos de ningún commit: https://github.com/frej/fast-export

La migración es muy sencilla:
Primero creamos el directorio del nuevo repositorio:
$ mkdir new_repository
$ cd new_repository
$ git init
$ hg-fast-export.sh -r <local-path-to-repository>

La utilidad solamente funciona con repositorios locales.
Una vez migrado habrá que hacer el checkout a mano, porque sino parecerá que está vacío.
$ git checkout

Una vez creado el repositorio remoto lo configuramos en nuestro nuevo repositorio local, por ejemplo:
$ git remote add origin git@bitbucket.org:oggers/new_repository.git
$ git push origin master

Advertencia: la utilidad usa python 2, por lo que si tu distribución linux usa la versión 3 de python por defecto, no te funcionará. En la distribución Antergos al menos ocurre esto y para solucionarlo rápidamente edité la utilidad para que usase python2.

No hay comentarios:

Publicar un comentario