# Comprendre les migrations de GitLab vers GitHub

GitHub Enterprise Importer automatise les migrations à partir de GitLab.

## À propos des migrations à partir de GitLab

Vous pouvez utiliser GitHub Enterprise Importer pour migrer des référentiels de GitLab vers GitHub Enterprise Cloud (GitHub.com ou GHE.com).

Les migrations sont effectuées avec le GL2GH extension of the GitHub CLIwrapper en ligne de commande multiplateforme autour des GitHub API de migration. Pour chaque référentiel, le GL2GH extension:

1. **Exporte** le projet GitLab vers une `.tar.gz` archive contenant le dépôt Git, ainsi que les métadonnées du projet (telles que les problèmes, les demandes de fusion, les étiquettes, les jalons et les versions).
2. **Effectue une phase** d’archivage localement sur l’ordinateur sur lequel vous exécutez la commande.
3. **Charge** l’archive dans le stockage d’objets blob qui GitHub peut lire (à GitHub-owned blob storage partir d’un compte de stockage que vous possédez dans AWS S3 ou Stockage Blob Azure).
4. **Importe** l’archive dans l’organisation de destination, transformant les entités GitLab en leurs GitHub équivalents.

Avant de créer votre compte d’entreprise sur GitHub, déterminez si votre entreprise utilisera Enterprise Managed Users. Cela affecte la façon dont vos membres s’authentifient et gèrent les identités et l’accès. Consultez « [Choix d’un type d’entreprise pour GitHub Enterprise Cloud](/fr/enterprise-cloud@latest/enterprise-onboarding/getting-started-with-your-enterprise/choose-an-enterprise-type) ».

## Versions de GitLab prises en charge

Vous pouvez migrer à partir des instances GitLab GitLab.com et auto-managées.

GitHub Enterprise Importer prend en charge les versions actuellement conservées (non de fin de vie) de GitLab. Pour obtenir la liste des versions gérées, consultez [l’instruction de prise en charge](https://docs.gitlab.com/policy/maintenance/) dans la documentation GitLab. Les versions antérieures n’ont pas été testées ou évaluées.

## Données migrées

Lorsque les données sont présentes dans l’archive d’exportation GitLab, GitHub Enterprise Importer migre les données suivantes de GitLab vers GitHub Enterprise Cloud.

* Source Git (y compris l’historique des validations) et le wiki du référentiel
* Commentaires de commit
* Project configuration qui mappe correctement, par exemple la branche par défaut
* Problèmes et commentaires sur les problèmes, y compris l’état des problèmes et les événements de jalon
  * Les discussions avec threads sont migrées en tant que commentaires plats avec le contexte du thread d’origine
* Demandes de fusion, qui sont converties en demandes de tirage(pull), notamment :
  * Commentaires (migrés en tant que commentaires de révision uniquement lorsque les données de différences sont présentes, sinon en tant que commentaires de problème plat ; seul le dernier diff est présent dans l’exportation)
  * Réviseurs et approbateurs
  * Événements d’état de requête de fusion
* Étapes majeures
* Événements de chronologie
* Réactions emoji
* Chargements (pièces jointes)
* Versions et ressources de mise en production
* membres Project (migrés en tant que mannequins)

## Données non migrées

Les données suivantes ne sont pas migrées.

* Git LFS objets : les fichiers pointeurs voyagent avec l’historique Git, mais les objets binaires doivent être envoyés à votre destination de migration séparément en tant que tâche de suivi. Pour plus d’informations, consultez « [Duplication d’un dépôt](/fr/repositories/creating-and-managing-repositories/duplicating-a-repository#mirroring-a-repository-that-contains-git-large-file-storage-objects) ».
* Stratégies de référentiel, notamment les trains de fusion, les portes de pipeline, les approbations requises, les rubriques, les avatars et la mise en miroir
* Paramètres de groupe et appartenance au groupe
* Extraits de code, tableaux de problèmes, données de suivi du temps et données de gestion de la conception
* Pipelines CI/CD et planifications de pipeline (`.gitlab-ci.yml` n’a pas d’équivalent automatique GitHub Actions )
* Rapports de vulnérabilité
* Données que GitLab n’inclut pas dans l’exportation du tout, telles que les webhooks, les variables CI/CD, les traces de travaux et les artefacts, l’historique des pipelines enfants et les déclencheurs de pipeline

## Limitations relatives aux données migrées

Il existe des limites à ce que GitHub Enterprise Importer peut migrer. Certains sont dus à des limitations de GitHub, tandis que d’autres sont des limitations de GitHub Enterprise Importer lui-même.

### Limitations de GitHub

* **Limite de taille de 2 Gio pour une validation Git unique :** Aucune validation unique dans votre référentiel Git ne peut être supérieure à 2 Gio. Si l’une de vos validations est supérieure à 2 Gio, vous devez fractionner la validation en validations plus petites qui sont chacune de 2 Gio ou plus petites.
* **Limite de taille de 2 Gio pour un seul push :** Aucun push unique ne peut être supérieur à 2 Gio. Les push plus volumineux échouent avec une `pack exceeds maximum allowed size` erreur.
* **Limite de 255 octets pour les références Git :** Aucune référence Git unique, communément appelée « ref », ne peut avoir un nom supérieur à 255 octets. En règle générale, cela signifie que vos références ne peuvent pas contenir plus de 255 caractères, mais que les caractères non ASCII, tels que les emojis, peuvent consommer plusieurs octets. Si l’une de vos références Git est trop grande, nous retournons un message d’erreur clair.
* **Limite de taille de fichier MiB 100 :** Une fois votre migration terminée, aucun fichier unique dans votre référentiel Git ne peut être supérieur à 100 Mio. Pendant la migration du référentiel, cette limite est augmentée à 400 Mio. Envisagez d’utiliser Git LFS pour stocker des fichiers volumineux.

### Limitations de GitHub Enterprise Importer

* **Limite de taille de 40 Go pour un référentiel Git (préversion publique) :** Cette limite s'applique uniquement au code source. Pour vérifier si l’archive du référentiel dépasse la limite, utilisez l’outil [git-sizer](https://github.com/github/git-sizer) et passez en revue la taille totale de l’objet blob dans la sortie. L’outil git-sizer permet également d’identifier les problèmes potentiels liés aux fichiers volumineux, à la taille d’objet blob, à la taille de validation et aux nombres d’arborescences susceptibles d’avoir un impact sur les migrations.
* **Limite de taille de fichier de 400 Mio :** Lors de la migration d’un référentiel avec GitHub Enterprise Importer, aucun fichier unique de votre référentiel Git ne peut dépasser 400 Mio. Envisagez d’utiliser Git LFS pour stocker des fichiers volumineux.
* \*\*Git LFS objets non migrés :\*\*Importer peut migrer des dépôts qui utilisent Git LFS, mais les objets LFS eux-mêmes ne seront pas migrés. Ils peuvent être poussés vers votre destination de migration en tant que tâche de suivi une fois la migration terminée.
* **Fonctionnalité de recherche de code différée :** La réindexation de l’index de recherche peut prendre quelques heures après la migration d’un dépôt, et les recherches de code peuvent retourner des résultats inattendus tant que la réindexation n’est pas terminée.
* **Les ensembles de règles configurés pour votre organisation peuvent entraîner l’échec des migrations** : Par exemple, si vous avez configuré une règle qui exige que les adresses e-mail des auteurs de commit se terminent par `@monalisa.cat`, et que le dépôt que vous migrez contient des commits qui ne sont pas conformes à cette règle, votre migration échoue.
* **Le contenu des utilisateurs fictifs pourrait ne pas être accessible à la recherche** : les utilisateurs fictifs sont des utilisateurs d’espace réservé auxquels le contenu importé (tel que les problèmes, les pull requests, les commentaires, etc.) est associé. Lorsque vous recherchez du contenu associé à un mannequin, tel que des problèmes attribués, ces problèmes peuvent ne pas être trouvés. Une fois qu’un mannequin est récupéré, le contenu doit être trouvé via le nouveau propriétaire.

### Limitations de GitLab

* **Limite de 40 Go pour l’archive d’exportation GitLab :** L’API d’exportation de projet gitLab ne produit pas d’archive supérieure à 40 Go sur GitLab.com. Contrairement à la GitHub limite de taille source, cela s’applique à l’intégralité de l’archive d’exportation, y compris les métadonnées du projet ainsi que la source Git. Cette limite est définie par GitLab et peut différer sur les instances auto-managées.