Preparar
El primer paso para migrar un proyecto de SVN a un control de versiones basado en Git es preparar la mÔquina local del responsable de la migración. En esta fase, descargarÔs un script de utilidad, montarÔs un sistema de archivos que distinga entre mayúsculas y minúsculas (si es necesario) y asignarÔs la información de autor de SVN a Git.
Todos los pasos siguientes se deben realizar en el equipo local del responsable de la migración.
Descarga el script de migración
Git incluye la mayorĆa de las herramientas necesarias para importar un repositorio SVN; sin embargo, faltan algunas funciones que Atlassian ha incorporado en un prĆ”ctico archivo JAR. Este archivo serĆ” fundamental para la migración, asĆ que asegĆŗrate de descargar svn-migration-scripts.jar desde la cuenta de Bitbucket de Atlassian. En esta guĆa se da por hecho que lo has guardado en tu directorio principal. Información importante: para la migración de SVN, se necesita un sistema de archivos que distinga entre mayĆŗsculas y minĆŗsculas, y esto no funciona en NTFS. Te sugerimos que lo utilices en un equipo con Linux.Ā
Una vez que lo hayas descargado, es recomendable que verifiques los scripts para asegurarte de que tienes instalados Java Runtime Environment, Git, Subversion y la utilidad git-svn. Abre el sĆmbolo del sistema y ejecuta este comando:
java -jar ~/svn-migration-scripts.jar verifyEsto mostrarÔ un mensaje de error en la consola si no tienes los programas necesarios para el proceso de migración. Asegúrate de que el software que falta esté instalado antes de continuar.
Si recibes una advertencia que indica que no es posible determinar una versión, ejecuta export LANG=C (*nix) o SET LANG=C (Windows) e inténtalo de nuevo.
Si estÔs haciendo la migración en un equipo con OS X, también verÔs la siguiente advertencia:
You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss.Hablaremos de ello en el apartado siguiente.
Monta una imagen de disco que distinga entre mayĆŗsculas y minĆŗsculas
La migración a Git debe hacerse en un sistema de archivos que distinga entre mayúsculas y minúsculas para evitar dañar el repositorio. Esto supone un problema si la migración se hace en un equipo con OS X, ya que el sistema de archivos de OS X no distingue entre mayúsculas y minúsculas.
Si no tienes instalado OS X, todo lo que tienes que hacer es crear un directorio en tu mÔquina local llamado ~/GitMigration. Aquà es donde harÔs la conversión. Después de eso, puedes pasar a la siguiente sección.
Si tienes OS X, debes montar una imagen de disco que distinga entre mayúsculas y minúsculas con el script create-disk-image incluido en svn-migration-scripts.jar. Se necesitan dos parÔmetros:
1. El tamaƱo de la imagen de disco que se va a crear en gigabytes. Puedes usar el tamaƱo que quieras, siempre y cuando sea mƔs grande que el repositorio SVN que intentas migrar.
2. El nombre de la imagen de disco. En esta guĆa se utiliza GitMigration para este valor.
Por ejemplo, el siguiente comando crea una imagen de disco de 5Ā GB llamada GitMigration:
java -jar ~/svn-migration-scripts.jar create-disk-image 5 GitMigrationLa imagen de disco estĆ” montada en el directorio principal, por lo que ahora deberĆas ver un directorio llamado ~/GitMigration en tu equipo local. Esto sirve como un sistema de archivos virtual que distingue entre mayĆŗsculas y minĆŗsculas, y es donde almacenarĆ”s el repositorio de Git convertido.
Extrae la información de autor
SVN solo registra el nombre de usuario del autor en cada revisión. Sin embargo, Git almacena el nombre completo y la dirección de correo electrónico del autor. Esto significa que necesitas crear un archivo de texto que asigne los nombres de usuario de SVN a sus equivalentes en Git.
Ejecuta los siguientes comandos para generar automƔticamente este archivo de texto:
cd ~/GitMigration
java -jar ~/svn-migration-scripts.jar authors <svn_repo_uri> > authors.txtSustituye <svn_repo_uri> por el URI del repositorio SVN que quieres migrar. Por ejemplo, si tu repositorio residĆa en https://svn.example.com, podrĆas ejecutar lo siguiente:
java -jar ~/svn-migration-scripts.jar authors https://svn.example.com > authors.txtEsto crea un archivo de texto llamado authors.txt que contiene el nombre de usuario de cada autor en el repositorio SVN junto con un nombre y una dirección de correo electrónico generados. DeberĆa ser algo asĆ:
j.doe = j.doe <j.doe@mycompany.com>
m.smith = m.smith <m.smith@mycompany.com>Cambia la parte a la derecha del signo igual por el nombre y la dirección de correo electrónico completos del usuario correspondiente. Por ejemplo, podrĆas cambiar los autores anteriores a:
j.doe = John Doe <john.doe@atlassian.com>
m.smith = Mary Smith <mary.smith@atlassian.com>Resumen
Ahora que tienes tus scripts de migración, la imagen de disco (solo SO X) y la información de autor, estÔs listo para importar tu historia de SVN a un repositorio Git nuevo. La próxima fase explica cómo funciona esta conversión.