# Entender as migrações do GitLab para o GitHub

GitHub Enterprise Importer automatiza migrações do GitLab.

## Sobre migrações do GitLab

Você pode usar GitHub Enterprise Importer para migrar repositórios do GitLab para GitHub Enterprise Cloud (GitHub.com ou GHE.com).

As migrações são executadas com o GL2GH extension of the GitHub CLIwrapper de linha de comando multiplataforma em torno das APIs de GitHub migração. Para cada repositório, o GL2GH extension:

1. **Exporta** o projeto do GitLab para um `.tar.gz` arquivo morto que contém o repositório Git mais metadados do projeto (como problemas, solicitações de mesclagem, rótulos, marcos e versões).
2. **Estágios** do arquivo localmente no computador em que você executa o comando.
3. **Carrega** o arquivo morto no armazenamento de blobs que GitHub pode ser lido (GitHub-owned blob storageou uma conta de armazenamento que você possui no AWS S3 ou Armazenamento de Blobs do Azure).
4. **Importa** o arquivo morto para a organização de destino, transformando entidades do GitLab em seus GitHub equivalentes.

Antes de criar sua conta corporativa no GitHub, decida se sua empresa usará ou não o Enterprise Managed Users. Isso afeta como seus membros se autenticam e como você gerencia identidades e acesso. Consulte [Escolher um tipo de empresa para o GitHub Enterprise Cloud](/pt/enterprise-cloud@latest/enterprise-onboarding/getting-started-with-your-enterprise/choose-an-enterprise-type).

## Versões do GitLab com suporte

Você pode migrar de instâncias do GitLab GitLab.com e autogerenciadas.

GitHub Enterprise Importer dá suporte às versões atualmente mantidas (sem fim de vida) do GitLab. Para obter a lista de versões mantidas, consulte [a Instrução de suporte](https://docs.gitlab.com/policy/maintenance/) na documentação do GitLab. As versões mais antigas não foram testadas ou avaliadas.

## Dados que são migrados

Quando os dados estão presentes no arquivo de exportação do GitLab, GitHub Enterprise Importer migra os dados a seguir do GitLab para GitHub Enterprise Cloud.

* Origem do Git (incluindo o histórico de confirmação) e o wiki do repositório
* Comentários de commit
* Project configuração que é mapeada de forma limpa, como o branch padrão
* Problemas e comentários de emissão, incluindo eventos de estado de emissão e marco
  * As discussões encadeadas são migradas como comentários simples com o contexto do thread original
* Solicitações de mesclagem, que são convertidas em solicitações de pull, incluindo:
  * Comentários (migrados como comentários de revisão somente quando os dados de diferenciação estão presentes, caso contrário, como comentários de problema simples; apenas a comparação mais recente está presente na exportação)
  * Revisores e aprovadores
  * Eventos de estado de solicitação de mesclagem
* Etapas
* Eventos da linha do tempo
* Reações de emoji
* Uploads (anexos)
* Versões e liberação de ativos
* Project membros (migrados como manequins)

## Dados que não são migrados

Os dados a seguir não são migrados.

* Git LFS objetos: os arquivos de ponteiro viajam com o histórico do Git, mas os objetos binários devem ser enviados por push para o destino de migração separadamente como uma tarefa de acompanhamento. Para obter mais informações, consulte [Duplicar um repositório](/pt/repositories/creating-and-managing-repositories/duplicating-a-repository#mirroring-a-repository-that-contains-git-large-file-storage-objects).
* Políticas de repositório, incluindo trens de mesclagem, portões de pipeline, aprovações necessárias, tópicos, avatares e espelhamento
* Configurações de grupo e associação de grupo
* Snippets, quadros de problemas, dados de acompanhamento de tempo e dados de gerenciamento de design
* Pipelines de CI/CD e agendamentos de pipeline (`.gitlab-ci.yml` não tem equivalente automático GitHub Actions )
* Relatórios de vulnerabilidade
* Dados que o GitLab não inclui na exportação, como webhooks, variáveis de CI/CD, rastreamentos de trabalho e artefatos, histórico de pipeline filho e gatilhos de pipeline

## Limitações dos dados migrados

Há limites para o que GitHub Enterprise Importer pode migrar. Alguns são devido a limitações de GitHub, enquanto outros são limitações de GitHub Enterprise Importer si mesmo.

### Limitações de GitHub

* **Limite de tamanho de 2 GiB para uma única confirmação do Git:** Nenhuma confirmação única em seu repositório Git pode ser maior que 2 GiB. Se algum de seus commits for maior que 2 GiB, você precisará dividi-lo em commits menores, cada um com 2 GiB ou menos.
* **Limite de tamanho de 2 GiB para um único push:** Nenhum único push pode ser maior que 2 GiB. Os pushes maiores falham com um `pack exceeds maximum allowed size` erro.
* **Limite de 255 bytes para referências do Git:** Nenhuma referência única do Git, comumente conhecida como "ref", pode ter um nome maior que 255 bytes. Normalmente, isso significa que suas referências não podem ter mais de 255 caracteres, mas qualquer caractere que não seja ASCII, como emojis, pode consumir mais de um byte. Se uma das referências do Git for muito grande, retornaremos uma mensagem de erro clara.
* **Limite de tamanho de arquivo de 100 MiB:** Depois de concluir a migração, nenhum arquivo único no repositório Git poderá ter mais de 100 MiB. Durante a migração do repositório, esse limite é aumentado para 400 MiB. Considere o uso Git LFS para armazenar arquivos grandes.

### Limitações de GitHub Enterprise Importer

* **Limite de tamanho de 40 GB para um repositório Git (prévia pública):** este limite de aplica apenas ao código-fonte. Para verificar se o arquivo do repositório está acima do limite, use a ferramenta [git-sizer](https://github.com/github/git-sizer) e analise o tamanho total do BLOB na saída. A ferramenta git-sizer também ajuda a identificar possíveis problemas relacionados a arquivos grandes, tamanho de BLOB, tamanho de commit e contagens de árvores que podem afetar as migrações.
* **Limite de tamanho de arquivo de 400 MiB:** Ao migrar um repositório com GitHub Enterprise Importer, nenhum arquivo único no repositório Git pode ter mais de 400 MiB. Considere o uso Git LFS para armazenar arquivos grandes.
* **Git LFS objetos não migrados:** O Importer pode migrar repositórios que usam Git LFS, mas os próprios objetos LFS não serão migrados. Eles podem ser enviados para o destino da migração como uma tarefa de acompanhamento após a conclusão da migração.
* **Funcionalidade de pesquisa de código atrasada:** a reindexação do índice de pesquisa pode levar algumas horas após a migração de um repositório, e as pesquisas de código podem retornar resultados inesperados até que a reindexação seja concluída.
* **Os conjuntos de regras configurados para sua organização podem causar falha nas migrações**: por exemplo, se você tiver configurado uma regra que exige que os endereços de email dos autores de commits terminem com `@monalisa.cat` e o repositório que você está migrando contém commits que não obedecem a essa regra, sua migração falhará.
* **O conteúdo do manequim pode não ser pesquisável**: os manequins são usuários de espaço reservado aos quais o conteúdo importado (como problemas, solicitações de pull, comentários, etc.) está associado. Quando você pesquisa conteúdo associado a um manequim, como problemas atribuídos, os problemas podem não ser encontrados. Uma vez que um manequim é recuperado, o conteúdo deve ser acessado através do novo proprietário.

### Limitações do GitLab

* **Limite de 40 GB para o arquivo de exportação do GitLab:** A API de exportação de projeto do GitLab não produzirá um arquivo com mais de 40 GB em GitLab.com. Ao contrário do limite de tamanho de origem GitHub , isso se aplica a todo o arquivo de exportação, incluindo metadados do projeto, bem como a origem do Git. Esse limite é definido pelo GitLab e pode ser diferente em instâncias autogerenciadas.