Skip to main content

Migrar seus repositórios do GitLab para GitHub

Execute uma execução de avaliação e, em seguida, migre seus repositórios do GitLab para GitHub.

Pré-requisitos

  • Você deve ter concluído todas as fases anteriores deste guia.
  • O projeto do GitLab deve ser habilitado para exportações. Consulte Habilitar a exportação de projeto e a configuração do Sidekiq para importações na documentação do GitLab.
  • Certifique-se de entender os dados que serão migrados e as limitações de suporte conhecidas do Importador. Para obter mais informações, consulte Entender as migrações do GitLab para o GitHub.
  • Embora não seja necessário, recomendamos interromper o trabalho durante a migração de produção. O Importer não dá suporte a migrações delta, ou seja, as alterações que ocorrerem durante a migração não serão migradas. Se você optar por não interromper o trabalho durante a migração de produção, precisará migrar manualmente essas alterações.

Executando uma execução de avaliação

Para ajudar a descobrir problemas que podem ser exclusivos da sua empresa, é altamente recomendável realizar um teste de migração. Com uma versão de teste, você aprenderá:

  • Se a migração para um determinado repositório pode ser concluída com êxito.
  • Se você pode obter o repositório migrado de volta para um estado viável.
  • Quanto tempo uma migração levará para ser executada.

Testes práticos podem ocorrer a qualquer momento, e o trabalho não precisa ser interrompido durante a migração. Para reduzir o tempo necessário para concluir suas migrações de teste, você pode agendar os lotes para suas execuções de teste uma após a outra. Os usuários desses repositórios podem validar os resultados no seu próprio tempo.

  1. Crie uma organização de teste para suas migrações de teste.

    Use uma única organização para todas as execuções de teste ou crie uma organização de teste para cada organização de destino pretendida. Considere a inclusão de -sandbox no final dos nomes da organização, para esclarecer que as organizações se destinam apenas à validação de migração e não à produção. Você pode excluir as organizações de teste depois de terminar.

  2. Execute as migrações de teste.

  3. Confirme se você é capaz de concluir as tarefas de acompanhamento em Tarefas de acompanhamento.

  4. Solicite aos usuários que validem os resultados das migrações.

  5. Resolva os problemas descobertos pelas migrações de teste.

  6. Opcionalmente, exclua a organização de teste.

Migrando um único repositório

Para migrar um repositório, use o gh gl2gh migrate-repo comando.

Shell
gh gl2gh migrate-repo \
  --gitlab-server-url GITLAB_SERVER_URL \
  --gitlab-group SOURCE_GROUP \
  --gitlab-project SOURCE_PROJECT \
  --github-org DESTINATION \
  --github-repo NEW_REPO_NAME \
  --use-github-storage

Substitua os espaços reservados no comando acima pelos valores a seguir.

Espaço reservadoValue
GITLAB_SERVER_URLA URL completa da instância do GitLab, como https://gitlab.com ou https://gitlab.example.com.
SOURCE_GROUPO caminho completo do grupo ou namespace que contém o projeto. Para subgrupos aninhados, use o caminho completo, como parent-group/subgroup.
SOURCE_PROJECTO projeto do GitLab a ser migrado.
DESTINOA organização de destino em GitHub.
NEW_REPO_NAMEO nome do repositório em GitHub.

Se você não estiver usando GitHub-owned blob storage, consulte Configurar o armazenamento de blobs.

Argumentos adicionais

ArgumentoDescription
--target-repo-visibilityDefine a visibilidade do novo repositório como public, privateou internal. Usa private como padrão.
--target-api-url TARGET-API-URLSe você estiver migrando para o GHE.com, adicione --target-api-url TARGET-API-URL, em que TARGET-API-URL é a URL da API base para o subdomínio da sua empresa. Por exemplo: https://api.octocorp.ghe.com.
--target-uploads-url TARGET-UPLOADS-URLSe você estiver migrando para GHE.com e usando GitHub-owned blob storage, também adicione --target-uploads-url TARGET-UPLOADS-URL, onde TARGET-UPLOADS-URL é a URL de API de uploads base para o subdomínio da sua empresa. Por exemplo: https://uploads.octocorp.ghe.com. O padrão é https://uploads.github.com.
--no-ssl-verifyDesabilita a verificação SSL quando as GL2GH extension conversas com sua instância do GitLab. Use isso somente se a instância do GitLab usar um certificado autoassinado. Todas as outras etapas ainda verificam o SSL.
--archive-url URLImporta um arquivo anteriormente exportado de uma URL, em vez de exportar o projeto do GitLab novamente.
--archive-path PATHImporta um arquivo exportado anteriormente de um caminho de arquivo local, em vez de exportar o projeto do GitLab novamente.
--keep-archiveRetém o arquivo de exportação localmente em vez de excluí-lo após um upload bem-sucedido.

Como gerar um script de migração

Se você quiser migrar vários repositórios para ao GitHub Enterprise Cloud mesmo tempo, use o GitHub CLI para gerar um script de migração. O script resultante contém um migrate-repo comando por repositório.

Para gerar um script de migração, execute o comando gh gl2gh generate-script.

Shell
gh gl2gh generate-script \
  --gitlab-server-url GITLAB_SERVER_URL \
  --github-org DESTINATION \
  --output FILENAME \
  --use-github-storage

Substitua os espaços reservados no comando acima pelos valores a seguir.

Espaço reservadoValue
GITLAB_SERVER_URLA URL completa da instância do GitLab, como https://gitlab.com ou https://gitlab.example.com.
DESTINOA organização de destino em GitHub.
FILENAMEUm nome de arquivo para o script de migração resultante

Se estiver usando o Terminal, use uma extensão de arquivo .ps1, pois o script gerado exige a execução do PowerShell. Você pode instalar o PowerShell para Mac ou Linux.

Por padrão, o script inclui todos os projetos que o token pode acessar. Para definir o escopo do script, adicionar --gitlab-group GROUPou --gitlab-group GROUP --gitlab-project PROJECT para um único projeto.

Se você não estiver usando GitHub-owned blob storage, consulte Configurar o armazenamento de blobs.

Argumentos adicionais

ArgumentoDescription
--target-api-url TARGET-API-URLSe você estiver migrando para o GHE.com, adicione --target-api-url TARGET-API-URL, em que TARGET-API-URL é a URL da API base para o subdomínio da sua empresa. Por exemplo: https://api.octocorp.ghe.com.
--target-uploads-url TARGET-UPLOADS-URLSe você estiver migrando para GHE.com e usando GitHub-owned blob storage, também adicione --target-uploads-url TARGET-UPLOADS-URL, onde TARGET-UPLOADS-URL é a URL de API de uploads base para o subdomínio da sua empresa. Por exemplo: https://uploads.octocorp.ghe.com. O padrão é https://uploads.github.com.

Como revisar o script de migração

Depois de gerar o script, analise o arquivo e, opcionalmente, edite o script.

  • Se houver repositórios que você não deseja migrar, exclua ou comente as linhas correspondentes.
  • Caso você deseje que algum repositório tenha um nome diferente na organização de destino, atualize o valor do sinalizador --github-repo correspondente.
  • Se você quiser alterar a visibilidade de um novo repositório, adicione ou atualize o sinalizador correspondente --target-repo-visibility .

Migrar repositórios

Se sua execução de teste foi bem-sucedida e você conseguiu concluir as tarefas de acompanhamento, poderá prosseguir para a migração real.

Aviso

Recomendamos interromper o trabalho nos repositórios que você está migrando. Todas as alterações feitas durante ou após a migração precisarão ser migradas manualmente.

Execute o script gerado. Substitua FILENAME nos comandos abaixo pelo nome do arquivo que você forneceu ao gerar o script.

  • Se estiver usando o Terminal, use ./.

    Shell
    ./FILENAME
    
  • Se estiver usando o PowerShell, use .\.

    Shell
    .\FILENAME