Skip to main content

Exportar dados de migração do GitHub.com

Você pode exportar dados de migração de uma organização no GitHub.com usando a API para selecionar repositórios a serem migrados e, em seguida, gerando um arquivo de migração que pode ser importado em uma instância do GitHub Enterprise Server.

Preparar a organização de origem em GitHub

  1. Verifique se você tem permissões de proprietário nos repositórios da organização de origem.

  2. Gerar um token de acesso com os escopos repo e admin:org no GitHub.com.

  3. Para minimizar o tempo de inatividade, faça uma lista de repositórios que você deseja exportar a partir da instância de origem. É possível adicionar vários repositórios a uma exportação de uma vez usando um arquivo de texto que lista a URL de cada repositório em uma linha separada.

Exportar repositórios da organização

Observação: as relações de fork não são persistentes após uma migração.

Para exportar dados de repositório por meio do GitHub.com, use a API de Migrações.

No momento, a API de Migrações está em período de exibição. Ou seja, os pontos de extremidade e os parâmetros podem mudar no futuro.

Gerar arquivos de migração

Observação: bloquear um repositório impede todo o acesso de gravação ao repositório. Não é possível associar novas equipes ou colaboradores a um repositório bloqueado.

Se você estiver realizando uma execução de teste, você não precisará bloquear o repositório. Quando você migra dados de um repositório que está em uso, o GitHub recomenda o bloqueio do repositório. Para obter mais informações, confira "Sobre as migrações".

  1. Informe os integrantes da organização que você fará uma migração. Dependendo do número de repositórios exportados, a exportação pode levar vários minutos. A migração completa (com importação) pode levar horas. Portanto, é recomendável fazer uma avaliação para determinar a duração do processo completo. Para obter mais informações, confira "Sobre as migrações".

  2. Inicie uma migração enviando uma solicitação POST ao ponto de extremidade da migração. Você precisará de:

    • Token de acesso para autenticação;
    • Uma lista dos repositórios que você deseja migrar:
      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -X POST \
      -H "Accept: application/vnd.github+json" \
      -d'{"lock_repositories":true,"repositories":["orgname/reponame", "orgname/reponame"]}' \
      https://api.github.com/orgs/orgname/migrations
    • Caso deseje bloquear os repositórios antes de migrá-los, defina lock_repositories como true. Fazer isso é altamente recomendável.
    • Você pode excluir anexos de arquivo transmitindo exclude_attachments: true para o ponto de extremidade. Anexos de arquivos podem ser grandes e gerar um volume desnecessário no seu arquivo de migração final. O tamanho do arquivo final precisa ter menos de 20 GB.

    Essa solicitação retorna uma id exclusiva que representa a migração. Você precisará dele em ações subsequentes que envolvam a API de Migrações.

  3. Envie uma solicitação GET ao ponto de extremidade de status da migração para buscar o status de uma migração. Você precisará de:

    • Token de acesso para autenticação;
    • A id exclusiva da migração:
      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -H "Accept: application/vnd.github+json" \
      https://api.github.com/orgs/orgname/migrations/id

    Os estados das migrações são os seguintes:

    • pending, que significa que a migração ainda não foi iniciada.
    • exporting, que significa que a migração está em andamento.
    • exported, que significa que a migração foi concluída com êxito.
    • failed, que significa que a migração falhou.
  4. Depois que a migração for exportada, baixe o arquivo de migração enviando uma solicitação GET ao ponto de extremidade de download da migração. Você precisará de:

    • Token de acesso para autenticação;
    • A id exclusiva da migração:
      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -H "Accept: application/vnd.github+json" \
      -L -o migration_archive.tar.gz \
      https://api.github.com/orgs/orgname/migrations/id/archive
  5. O arquivo de migração é excluído automaticamente após sete dias. Se preferir excluí-lo mais cedo, envie uma solicitação DELETE ao ponto de extremidade de exclusão do arquivo de migração. Você precisará de:

    • Token de acesso para autenticação;
    • A id exclusiva da migração:
      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -X DELETE \
      -H "Accept: application/vnd.github+json" \
      https://api.github.com/orgs/orgname/migrations/id/archive
  6. Para preparar os dados de migração arquivados para importação em uma instância do GitHub Enterprise Server, confira "Como se preparar para migrar dados para sua empresa".