SubGit (frente a la pantalla azul de la muerte)
subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
Es todo
+ Para actualizar desde SVN, un repositorio Git creado por el primer comando.
subgit import directory/path/Local.git.Repo
Utilicé una forma de migrar a Git instantáneamente para un gran repositorio.
Por supuesto que necesitas algo de preparación.
Pero no puede detener el proceso de desarrollo, en absoluto.
Aquí está mi camino.
Mi solución se ve así:
- Migrar SVN a un repositorio Git
- Actualice el repositorio de Git justo antes de que el equipo se cambie .
La migración lleva mucho tiempo para un gran repositorio SVN.
Pero la actualización de la migración completada solo segundos.
Por supuesto que estoy usando SubGit , mamá. git-svn me hace pantalla azul de la muerte . Solo constantemente. Y git-svn me está aburriendo con el error fatal " nombre de archivo demasiado largo " de Git .
PASOS
1. Descargar SubGit
2. Prepare los comandos de migración y actualización.
Digamos que lo hacemos para Windows (es trivial portar a Linux).
En el directorio bin de instalación de SubGit (subgit-2.XX \ bin), cree dos archivos .bat.
Contenido de un archivo / comando para la migración:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
El comando "inicio" es opcional aquí (Windows). Permitirá ver errores al inicio y dejará un shell abierto después de completar el SubGit.
Puede agregar aquí parámetros adicionales similares a git-svn . Solo estoy usando --default-domain myCompanyDomain.com para arreglar el dominio de la dirección de correo electrónico de los autores SVN.
Tengo la estructura del repositorio SVN estándar (troncal / ramas / etiquetas) y no tuvimos problemas con el "mapeo de autores". Así que ya no estoy haciendo nada más.
(Si desea migrar etiquetas como ramas o su SVN tiene varias carpetas de ramas / etiquetas, puede considerar utilizar el enfoque SubGit más detallado )
Consejo 1 : Use --minimal-revision YourSvnRevNumber para ver rápidamente cómo se resuelven las cosas (algún tipo de depuración). Especialmente útil es ver nombres de autores resueltos o correos electrónicos.
O para limitar la profundidad del historial de migración.
Consejo 2 : La migración puede interrumpirse ( Ctrl+ C) y restaurarse ejecutando el siguiente comando / archivo de actualización.
No aconsejo hacer esto para grandes repositorios. Recibí la excepción "Memoria insuficiente Java + Windows".
Consejo 3 : es mejor crear una copia de su repositorio de resultados.
Contenido de un archivo / comando para actualizar:
start subgit import directory/path/Local.git.Repo
Puede ejecutarlo cualquier cantidad de veces cuando desee obtener las confirmaciones del último equipo en su repositorio de Git.
¡Advertencia! No toque su repositorio desnudo (creación de ramas, por ejemplo).
Tomarás el siguiente error fatal:
Error irrecuperable: no están sincronizados y no se pueden sincronizar ... Traduciendo las revisiones de Subversion a las confirmaciones de Git ...
3. Ejecute el primer comando / archivo. Tomará mucho tiempo para un gran repositorio. 30 horas para mi humilde repositorio.
Es todo
Puede actualizar su repositorio Git desde SVN en cualquier momento y cualquier cantidad de tiempo ejecutando el segundo archivo / comando. Y antes de cambiar de equipo de desarrollo a Git.
Tomará solo unos segundos.
Hay una tarea más útil.
Empuje su repositorio Git local a un repositorio Git remoto
¿Es tu caso? Vamos a proceder
- Configura tus controles remotos
Correr:
$ git remote add origin url://your/repo.git
- Prepárese para el envío inicial de su enorme repositorio Git local a un repositorio remoto
Por defecto, su Git no puede enviar grandes fragmentos.
fatal: el extremo remoto colgó inesperadamente
Corramos por ello:
git config --global http.postBuffer 1073741824
524288000 - 500 MB 1073741824 - 1 GB, etc.
Solucione sus problemas de certificados locales . Si su servidor git usa un certificado roto.
He deshabilitado los certificados .
Además, su servidor Git puede tener limitaciones de cantidad de solicitud que deben corregirse .
- Empuje toda la migración al repositorio Git remoto del equipo.
Ejecutar con un Git local:
git push origin --mirror
( git push origin '*: *' para versiones antiguas de Git)
Si obtiene lo siguiente: error: no puede generar git: No existe tal archivo o directorio ... Para mí, la recreación completa de mi repositorio resuelve este error (30 horas). Puedes probar los siguientes comandos
git push origin --all
git push origin --tags
O intenta reinstalar Git ( inútil para mí ). O puede crear ramas a partir de todas sus etiquetas y empujarlas. O, o, o ...