icono_twiter
Daniel Hernandez del Peso

Consultor tecnológico de desarrollo de proyectos informáticos.

Ingeniero en Informática

Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación

Somos expertos en Java/J2EE

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2012-03-07

Tutorial visitado 2.645 veces Descargar en PDF
Migrar repositorios de Mercurial a Git

Migrar repositorios de Mercurial a Git

Entorno del tutorial

El siguiente tutorial está desarrollado con el siguiente entorno:

  • Portatil MacBook Pro
  • Procesador Intel i7 2,8 GHz
  • 8 GB memoria RAM
  • Disco duro 256 GB SSD

Introduccón

A lo largo de la vida de una organización, es normal que las herramientas que un día son las óptimas para nosotros se vean sustituidas por otras más modernas, eficientes o simplemente, que se adecúen mejor a nuestras nuevas necesidades

Una de estas herramientas puede ser el sistema de control de versiones... Es posible que en los inicios se usara CVS y luego se pasara a Subversion o, como se verá en este tutorial, se empleara Mercurial en un comienzo y se haya acabado usando Git

Cuando se realiza la migración de los datos de un repositorio de código a otro, tenemos que tener en cuenta dos cosas importantes: Por un lado, el número de recursos que necesitamos mover puede ser bastante grande; por otro, es más que interesante mantener los datos históricos tras la migración (saber por qué se ha hecho cada cambio en cada fichero de código, quién lo hizo, etc.).

Por tanto, lo mejor es buscar herramientas que nos ayuden a resolver estos dos problemas. En este caso, vamos a ver como usar la herramienta "fast-export" para migrar los contenidos de un repositorio de Mercurial a un repositorio Git

Primer paso: obtener fast-export

Como puedes ver, estoy considerando que el primer paso va a ser directamente la descarga de ""fast-export". Doy por sentado que, a estas alturas, dispones del cliente de Mercurial y del cliente de Git correctamente instalados y funcionando...

Hecha la aclaracón, para obtener "fast-export", vamos a recogerlo de su propio repositorio de Git: http://repo.or.cz/w/fast-export.git

Repositorio de fast-export

De este repositorio, descargamos una "snapshot", en nuestro caso la versión en "tar.gz", y la descomprimimos donde más nos guste...

Estructura de ficheros de fast-export

Como podéis ver, se trata de un script SH y poco más, no tiene componentes visuales...

Segundo paso: Configurar los repositorios de origen y destino

Una vez que tenemos fast-export listo para usar, descargaremos en nuestro equipo el repositorio de Mercurial que queremos migrar. Para ello, iremos a la carpeta en que deseamos que se descargue y ejecutamos el comando hg clone https://mihost/mirepositorio/proyectoTutorial y con eso tenemos en local nuestro proyecto

A continuación, tenemos que acceder al repositorio Git. Yo ya tengo un repositorio vacío creado y voy a descargarlo para hacer la importación sobre él: git clone https://host.de.mi.repo/tutorialEjemplo

Tercer paso: empieza la "magia"

Llegamos al momento crucial... Una vez que tenemos todo lo necesario (los dos repositorios y el script) sólo nos queda juntarlo todo

Vamos al directorio donde se ha creado el directorio de trabajo de Git y ejecutamos el comando: /ruta/a/fast-export/hg-fast-export.sh -r /ruta/a/MercurialRepo/repoTutorial/ lo que nos genera la siguiente salida, signo de que todo ha ido bien

ejecución de fast-export

A continuación, hacemos un "git checkout" para traer al directorio de trabajo los cambios del repositorio local

Directorio de trabajo de Git

Ahorta ya tenemos en nuestro directorio local y en la copia local del repositorio Git remoto los commits. Para subirlo al repositorio remoto, ejecutamos el comando /ruta/a/git/repo/git push origin master

resultado del push al repositorio remoto de Git

Y ya lo tenemos :)

Ficheros en el repositorio remoto de Git

Conclusiones

Ya sabemos todos que la tecnología avanza cada vez más rápido, y las soluciones de hoy serán distintas a las que podamos aplicar mañana. Muchas veces nos quedamos anclados en tecnologías antiguas por miedo a que el cambio se complique...

Sin embargo, ya hemos visto que casi siempre se pueden encontrar herramientas para que estos cambios sean "triviales". No podemos olvidar que, gracias a internet, vivimos en un mundo global, y que es raro que mis problemas o dudas no los haya tenido alguien antes. Por tanto, buceando un poco vais a poder encontrar soluciones a muchas de las situaciones con las que os vais a encontrar

Así que ya sabéis, perded el miedo y si no lo conseguís, podéis contratar a Autentia para que os ayude

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL: