Requisitos previos
Para seguir estos pasos, debes usar un sistema macOS o Linux y tener instaladas las siguientes herramientas:
- Subversion
- Git, incluido
git-svn
- Almacenamiento de archivos de gran tamaño de Git (Git LFS) (consulta "Instalar Git Large File Storage")
Importación de un repositorio de Subversion
-
Crea un repositorio en tu instancia de GitHub Enterprise Server. 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 Enterprise Server. Para obtener más información, vea «Crear un repositorio nuevo».
-
Para confirmar que Git está instalado en el equipo, ejecuta
git --version.
.La salida debe ser similar a
git version 2.40.0
. -
Para confirmar que
git svn
está disponible en el equipo, ejecutagit 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 ejecutargit svn
, es posible que tengas que instalargit svn
por separado. Se recomienda usar Homebrew o el registro de paquetes de Ubuntu, que incluyen paquetesgit-svn
. -
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)
. -
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
. -
Ve al directorio del repositorio de Subversion.
-
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
svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
-
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>
-
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
, reemplazandoURL
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 yPATH/TO/AUTHORS.TXT
por la ruta de acceso al archivoauthors.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.
-
-
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
. -
Accede al directorio del repositorio de Git recién creado.
-
Para agregar el repositorio GitHub como remoto, ejecuta
git remote add origin URL
y reemplazaURL
por la dirección URL del repositorio GitHub que creó anteriormente, comohttps://github.com/octocat/example-repository.git
. -
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 Enterprise Server, 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.