title | intro | versions | shortTitle | ||||||
---|---|---|---|---|---|---|---|---|---|
Importing a Mercurial repository | You can import a repository from Mercurial by converting the repository to Git, then pushing the Git repository to {% data variables.product.github %}. |
| Mercurial |
To follow these steps, you must use a macOS or Linux system and have the following tools installed:
- Mercurial
- Git
- {% data variables.large_files.product_name_long %} ({% data variables.large_files.product_name_short %}) (see AUTOTITLE)
- Python, including the
pip
package manager
{% data reusables.migrations.create-empty-repo %}
To confirm that Mercurial is installed on your machine, run
hg --version
.The output should be similar to
Mercurial Distributed SCM (version 6.4)
. {% data reusables.migrations.confirm-git-installed %} {% data reusables.migrations.confirm-git-lfs-installed %}To confirm that
pip
is installed on your machine, runpip --version
.The output should be similar to
pip 21.2.4
.To install the
mercurial
Python package, runpip install mercurial
.Download the latest release of fast-export to your machine, then extract the archive.
Move into the extracted directory, then run
./hg-fast-export.sh --help
.The output should start with
usage: hg-fast-export.sh
.Clone your Mercurial repository.
For example, to clone the source code of Mercurial itself to the
mercurial-repo
directory, runhg clone https://www.mercurial-scm.org/repo/hg mercurial-repo
.Create a new directory, move into the new directory, then initialize a fresh Git repository.
For example, if you want to name your new repository
mercurial-git
, runmkdir mercurial-git && cd mercurial-git && git init
. {% data reusables.migrations.move-into-git-repo-directory %}To configure your new Git repository to handle the case of filenames in the same way as Mercurial, run
git config core.ignoreCase false
.To get a list of committers in your Mercurial project and store the list in
committers.txt
, run the following script.hg log --template "{author}\n"| sort | uniq > committers.txt
Update your
committers.txt
file, mapping the committer name used in the Mercurial repository to the name you want to use in your Git repository, with the following format:“The Octocat <octocato@gmail.com>”=”Octocat <octocat@github.com>”
In your initialized Git repository, run
hg-fast-export.sh
, passing in the path to your Mercurial repository and the path to yourcommitters.txt
file as arguments.For example,
../fast-export-221024/hg-fast-export.sh -r ../mercurial-repo -A ../mercurial-repo/committers.txt -M main
.After the import finishes, to check out your newly-created Git repository, run
git checkout HEAD
. {% data reusables.migrations.add-github-repo-as-remote %} {% data reusables.migrations.push-to-github %}
{% ifversion fpt or ghec %}
- AUTOTITLE {% endif %}