Acerca de las migraciones desde GitLab
Puede usar GitHub Enterprise Importer para migrar repositorios de GitLab a GitHub Enterprise Cloud (GitHub.com o GHE.com).
Las migraciones se realizan con GL2GH extension of the GitHub CLI, una herramienta de línea de comandos multiplataforma para las API de migración de GitHub. Para cada repositorio, :GL2GH extension
- Exporta el proyecto de GitLab a un
.tar.gzarchivo que contiene el repositorio de Git más los metadatos del proyecto (por ejemplo, problemas, solicitudes de combinación, etiquetas, hitos y versiones). - Prepara el archivo localmente en el equipo donde se ejecuta el comando.
- Carga el archivo en Blob Storage que GitHub puede leer desde (ya sea GitHub-owned blob storage o desde una cuenta de almacenamiento que posee en AWS S3 o Azure Blob Storage).
- Importa el archivo en la organización de destino y transforma las entidades de GitLab en sus GitHub equivalentes.
Antes de crear la cuenta de empresa en GitHub, decida si su empresa usará Enterprise Managed Users. Esto afecta a cómo se autentican los miembros y cómo se administran las identidades y el acceso. Consulte Elección de un tipo de empresa para GitHub Enterprise Cloud.
Versiones admitidas de GitLab
Puede migrar tanto desde GitLab.com como desde instancias de GitLab autoadministradas.
GitHub Enterprise Importer admite versiones de GitLab actualmente mantenidas que no han llegado al fin de su vida útil. Para obtener la lista de versiones mantenidas, consulte Declaración de compatibilidad en la documentación de GitLab. Las versiones anteriores no se han probado ni evaluado.
Datos que se migran
Cuando los datos están presentes en el archivo de exportación de GitLab, GitHub Enterprise Importer migra los siguientes datos de GitLab a GitHub Enterprise Cloud.
- Código fuente de Git (incluyendo el historial de commits) y la wiki del repositorio
- Comentarios sobre confirmación de cambios
- Configuración del proyecto que se corresponde claramente, como la rama predeterminada
- Incidencias y comentarios de las incidencias, incluidos los eventos de estado de la incidencia y de hitos
- Las conversaciones en hilo se migran como comentarios sin jerarquía con el contexto del hilo original
- Solicitudes de fusión, que se convierten en solicitudes de extracción, incluidas:
- Comentarios (migrados como comentarios de revisión solo cuando hay datos del diff; de lo contrario, como comentarios simples de incidencia; solo el diff más reciente está presente en la exportación)
- Revisores y aprobadores
- Eventos de estado de la solicitud de fusión
- Hitos
- Eventos de la cronología
- Reacciones de emoji
- Cargas (datos adjuntos)
- Versiones y recursos de versión
- miembros de Project (migrados como maniquíes)
Datos que no se migran
Los datos siguientes no se migran.
- Git LFS objetos: los archivos de puntero viajan con el historial de Git, pero los objetos binarios deben enviarse al destino de migración por separado como tarea posterior. Para obtener más información, vea Duplicar un repositorio.
- Directivas de repositorio, incluidos los trenes de mezcla, las puertas de canalización, las aprobaciones necesarias, los temas, los avatares y la creación de reflejo
- Configuración de grupo y pertenencia a grupos
- Fragmentos de código, paneles de problemas, datos de seguimiento de tiempo y datos de administración de diseño
- Canalizaciones de CI/CD y programaciones de canalización (
.gitlab-ci.ymlno tiene equivalente automático GitHub Actions ) - Informes de vulnerabilidades
- Datos que GitLab no incluye en absoluto en la exportación, como webhooks, variables de CI/CD, registros de trabajos y artefactos, historial de canalizaciones secundarias y desencadenadores de canalización
Limitaciones de los datos migrados
Hay límites para lo que GitHub Enterprise Importer puede migrar. Algunos se deben a limitaciones de GitHub, mientras que otros son limitaciones de GitHub Enterprise Importer sí mismos.
Limitaciones de GitHub
- 2 Límite de tamaño de GiB para una única confirmación de Git: Ninguna confirmación única en el repositorio de Git puede ser superior a 2 GiB. Si alguna de sus confirmaciones supera los 2 GiB, deberá dividir la confirmación en otras más pequeñas, cada una de 2 GiB o menos.
- Límite de tamaño de 2 GiB para una sola inserción: Ninguna inserción única puede ser mayor que 2 GiB. Las inserciones más grandes producen un
pack exceeds maximum allowed sizeerror. - Límite de 255 bytes para las referencias de Git: Ninguna referencia de Git única, conocida normalmente como "ref", puede tener un nombre mayor que 255 bytes. Normalmente, esto significa que las referencias no pueden tener más de 255 caracteres, pero cualquier carácter que no sea ASCII, como emojis, puede consumir más de un byte. Si alguna de las referencias de Git es demasiado grande, devolveremos un mensaje de error claro.
- Límite de tamaño de archivo MiB de 100: Después de completar la migración, ningún archivo único en el repositorio de Git puede ser mayor que 100 MiB. Durante la migración del repositorio, este límite aumenta a 400 MiB. Considere la posibilidad de usar Git LFS para almacenar archivos grandes.
Limitaciones de GitHub Enterprise Importer
- Límite de tamaño de 40 GB para un repositorio de Git (versión preliminar pública): este límite solo se aplica al código fuente. Para comprobar si el archivo del repositorio supera el límite, use la herramienta git-sizer y revise el tamaño total del blob en la salida. La herramienta git-sizer también ayuda a identificar posibles problemas relacionados con archivos de gran tamaño, tamaño de blob, tamaño de confirmación y recuentos de árboles que podrían afectar a las migraciones.
- Límite de tamaño de archivo MiB de 400: Al migrar un repositorio con GitHub Enterprise Importer, ningún archivo único en el repositorio de Git puede ser mayor que 400 MiB. Considere la posibilidad de usar Git LFS para almacenar archivos grandes.
- **Git LFS objetos no migrados:**Importer puede migrar repositorios que usan Git LFS, pero los propios objetos LFS no se migrarán. Se pueden trasladar al destino de la migración como una tarea posterior una vez que se complete la migración.
- Funcionalidad de búsqueda de código retrasada: volver a indexar el índice de búsqueda puede tardar unas horas después de migrar un repositorio y las búsquedas de código pueden devolver resultados inesperados hasta que se complete la nueva indexación.
- Los conjuntos de reglas configurados para la organización pueden provocar errores en las migraciones: por ejemplo, si has configurado una regla que requiere que las direcciones de correo electrónico de los creadores de confirmaciones terminen en
@monalisa.caty el repositorio que vas a migrar contiene confirmaciones que no cumplen esta regla, se producirá un error en la migración. - Es posible que el contenido de Mannequin no se pueda buscar: los maniquíes son usuarios de marcador de posición a los que está asociado el contenido importado (por ejemplo, problemas, solicitudes de incorporación de cambios, comentarios, etc.). Al buscar contenido asociado a un maniquí, como problemas asignados, es posible que no se encuentren los problemas. Una vez reclamado un maniquí, el contenido debe encontrarse a través del nuevo propietario.
Limitaciones de GitLab
- Límite de 40 GB para el archivo de exportación de GitLab: La API de exportación de proyectos de GitLab no generará un archivo de más de 40 GB en GitLab.com. A diferencia del GitHub límite de tamaño de origen, esto se aplica a todo el archivo de exportación, incluidos los metadatos del proyecto y el origen de Git. GitLab establece este límite y puede diferir en las instancias autoadministradas.