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 verify
Esto 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.
Material relacionado
Cómo mover un repositorio de Git completo
VER LA SOLUCIÓN
Aprende a usar Git con Bitbucket Cloud
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. The name of the disk image. This guide uses GitMigration
for this value.
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 GitMigration
La 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.txt
Sustituye
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.txt
Esto 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 verse como esto:
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.
Compartir este artículo
Tema siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.