Skip to main content

Esta versão do GitHub Enterprise Server foi descontinuada em 2024-03-26. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise Server. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

Como importar um repositório do Mercurial

Você pode importar um repositório do Mercurial convertendo o repositório no Git e, em seguida, efetuando push do repositório Git para o GitHub Enterprise Server.

Pré-requisitos

Para seguir estas etapas, você precisa usar um sistema macOS ou Linux e ter as seguintes ferramentas instaladas:

Como importar um repositório do Mercurial

  1. Crie um repositório no sua instância do GitHub Enterprise Server. Para evitar erros, não inicialize o novo repositório com arquivos LEIAME, de licença ou gitignore. É possível adicionar esses arquivos após push do projeto no GitHub Enterprise Server. Para obter mais informações, confira "Criar um repositório".

  2. Para confirmar se o Mercurial está instalado no computador, execute hg --version.

    A saída será semelhante a Mercurial Distributed SCM (version 6.4).

  3. Para confirmar se o Git está instalado no computador, execute git --version.

    A saída será parecida com git version 2.40.0.

  4. Para confirmar se o Git LFS está instalado no computador, execute git lfs --version.

    A saída será parecida com git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1).

  5. Para confirmar se o pip está instalado no computador, execute pip --version.

    A saída será semelhante a pip 21.2.4.

  6. Para instalar o pacote mercurial do Python, execute pip install mercurial.

  7. Baixe a última versão do fast-export no computador e extraia o arquivo morto.

  8. Acesse o diretório extraído e execute ./hg-fast-export.sh --help.

    A saída deve começar com usage: hg-fast-export.sh.

  9. Clone seu repositório do Mercurial.

    Por exemplo, para clonar o código-fonte do próprio Mercurial no diretório mercurial-repo, execute hg clone https://www.mercurial-scm.org/repo/hg mercurial-repo.

  10. Crie um diretório, vá para o novo diretório e inicialize um novo repositório Git.

    Por exemplo, caso você deseje nomear seu novo repositório mercurial-git, execute mkdir mercurial-git && cd mercurial-git && git init.

  11. Acesse o diretório do repositório Git recém-criado.

  12. Para configurar seu novo repositório Git para tratar o uso de maiúsculas e minúsculas de nomes de arquivos da mesma forma que o Mercurial, execute git config core.ignoreCase false.

  13. Para obter uma lista de autores de commit no projeto do Mercurial e armazenar a lista em committers.txt, execute o script a seguir.

    Shell
    hg log --template "{author}\n" | sort | uniq > committers.txt
    
  14. Atualize o arquivo committers.txt, mapeando o nome do autor do commit usado no repositório do Mercurial para o nome que você deseja usar no repositório Git, com o seguinte formato:

    “The Octocat <octocato@gmail.com>”=”Octocat <octocat@github.com>”
    
  15. No repositório Git inicializado, execute hg-fast-export.sh, transmitindo o caminho para o repositório do Mercurial e o caminho para o arquivo committers.txt como argumentos.

    Por exemplo, ../fast-export-221024/hg-fast-export.sh -r ../mercurial-repo -A ../mercurial-repo/committers.txt -M main.

  16. Após a conclusão da importação, para fazer check-out do repositório Git recém-criado, execute git checkout HEAD.

  17. Para adicionar o repositório GitHub como um repositório remoto, execute git remote add origin URL, substituindo URL pela URL do repositório GitHub criado anteriormente, como https://github.com/octocat/example-repository.git.

  18. Para efetuar push do repositório para o GitHub, execute git push --mirror origin.

    Se o repositório contiver arquivos maiores que o limite de tamanho do arquivo do GitHub Enterprise Server, poderá ocorrer uma falha no push. Mova os arquivos grandes para o Git LFS executando git lfs import e tente novamente.