Pré-requisitos
Para seguir estas etapas, você precisa usar um sistema macOS ou Linux e ter as seguintes ferramentas instaladas:
- Mercurial
- Git
- Git Large File Storage (Git LFS) (confira "Instalar o Git Large File Storage")
- Python, incluindo o gerenciador de pacotes
pip
Como importar um repositório do Mercurial
-
Crie um novo repositório em GitHub. 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. Para obter mais informações, confira "Criar um repositório".
-
Para confirmar se o Mercurial está instalado no computador, execute
hg --version
.A saída será semelhante a
Mercurial Distributed SCM (version 6.4)
. -
Para confirmar se o Git está instalado no computador, execute
git --version.
A saída será parecida com
git version 2.40.0
. -
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)
. -
Para confirmar se o
pip
está instalado no computador, executepip --version
.A saída será semelhante a
pip 21.2.4
. -
Para instalar o pacote
mercurial
do Python, executepip install mercurial
. -
Baixe a última versão do fast-export no computador e extraia o arquivo morto.
-
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
. -
Clone seu repositório do Mercurial.
Por exemplo, para clonar o código-fonte do próprio Mercurial no diretório
mercurial-repo
, executehg clone https://www.mercurial-scm.org/repo/hg mercurial-repo
. -
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
, executemkdir mercurial-git && cd mercurial-git && git init
. -
Acesse o diretório do repositório Git recém-criado.
-
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
. -
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
hg log --template "{author}\n" | sort | uniq > committers.txt
-
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>”
-
No repositório Git inicializado, execute
hg-fast-export.sh
, transmitindo o caminho para o repositório do Mercurial e o caminho para o arquivocommitters.txt
como argumentos.Por exemplo,
../fast-export-221024/hg-fast-export.sh -r ../mercurial-repo -A ../mercurial-repo/committers.txt -M main
. -
Após a conclusão da importação, para fazer check-out do repositório Git recém-criado, execute
git checkout HEAD
. -
Para adicionar o repositório GitHub como um repositório remoto, execute
git remote add origin URL
, substituindoURL
pela URL do repositório GitHub criado anteriormente, comohttps://github.com/octocat/example-repository.git
. -
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, poderá ocorrer uma falha no push. Mova os arquivos grandes para o Git LFS executando
git lfs import
e tente novamente.