Skip to main content

Importación de un repositorio de Subversion

Puedes importar un repositorio desde Subversion convirtiendo el repositorio a Git y, a continuación, insertando el repositorio de Git en GitHub.

Requisitos previos

Para seguir estos pasos, debes usar un sistema macOS o Linux y tener instaladas las siguientes herramientas:

Importación de un repositorio de Subversion

  1. Crea un repositorio en GitHub.com. Para evitar errores, no inicialices el nuevo repositorio con el archivo LÉAME, la licencia o archivos gitignore. Puedes agregar estos archivos después de que tu proyecto se haya subido a GitHub. Para obtener más información, vea «Crear un repositorio nuevo».

  2. Para confirmar que Git está instalado en el equipo, ejecuta git --version..

    La salida debe ser similar a git version 2.40.0.

  3. Para confirmar que git svn está disponible en el equipo, ejecuta git svn --version.

    La salida debe ser similar a git-svn version 2.40.0 (svn 1.14.2).

    Si se puede ejecutar git correctamente, pero se produce un error al ejecutar git svn, es posible que tengas que instalar git svn por separado. Se recomienda usar Homebrew o el registro de paquetes de Ubuntu, que incluyen paquetes git-svn.

  4. Para confirmar que Git LFS está instalado en el equipo, ejecuta git lfs --version.

    La salida debe ser similar a git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1).

  5. Consulta el repositorio de Subversion.

    Por ejemplo, para extraer el proyecto de código abierto Logisim de Sourceforge, ejecuta svn checkout https://svn.code.sf.net/p/circuit/code/trunk.

  6. Ve al directorio del repositorio de Subversion.

  7. Para obtener una lista de autores del proyecto de Subversion y almacenar la lista en authors.txt, ejecuta el siguiente script:

    Shell
    svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
    
  8. Actualiza el archivo authors.txt, asignando el nombre del autor usado en el repositorio de Subversion al nombre que deseas usar en el repositorio de Git, con el siguiente formato:

    octocat = The Octocat <octocat@github.com>
    
  9. Para convertir el repositorio de Subversion en un repositorio de Git, usa git svn.

    • Si el repositorio de Subversion tiene un formato estándar, con carpetas "trunk", "branches" y "tags", ejecute git svn clone -s URL PATH/TO/DESTINATION --authors-file PATH/TO/AUTHORS.TXT, reemplazando URL por la dirección URL del repositorio de Subversion, PATH/TO/DESTINATION por la ruta de acceso al directorio en el que deseas clonar el repositorio y PATH/TO/AUTHORS.TXT por la ruta de acceso al archivo authors.txt.

      Por ejemplo, para clonar el proyecto Logisim de Sourceforge en un directorio denominado logisim, ejecuta git svn clone -s https://svn.code.sf.net/p/circuit/code logisim --authors-file path/to/authors.txt.

    • Si el repositorio de Subversion no es estándar, puedes personalizar git svn para controlar el repositorio. Para obtener más información, consulta "git-svn" en la documentación de Git.

  10. Git comprobará cada revisión de SVN y convertirá la revisión en una confirmación de Git. Si el repositorio tiene muchos archivos o un historial grande, este proceso tardará mucho tiempo.

    En el caso de los repositorios grandes, el comando puede inmovilizarse. Si es así, puedes comenzar por dónde lo dejaste finalizando el comando con Ctrl+C, pasando al nuevo directorio y, a continuación, ejecutando git svn fetch.

  11. Accede al directorio del repositorio de Git recién creado.

  12. Para agregar el repositorio GitHub como remoto, ejecuta git remote add origin URL y reemplaza URL por la dirección URL del repositorio GitHub que creó anteriormente, como https://github.com/octocat/example-repository.git.

  13. Para insertar el repositorio en GitHub, ejecuta git push --mirror origin.

    Si el repositorio contiene archivos mayores que el tamaño de archivo de GitHub, es posible que se produzca un error en la inserción. Mueve los archivos grandes a Git LFS mediante la ejecución de git lfs import y vuelve a intentarlo.

Información adicional