Co-authored-by: Tim Rogers <timrogers@github.com> Co-authored-by: Siara <108543037+SiaraMist@users.noreply.github.com>
3.2 KiB
title, intro, versions, shortTitle
| 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.product_name %}. |
|
Mercurial |
Prerequisites
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
pippackage manager
Importing a Mercurial repository
{% 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
pipis installed on your machine, runpip --version.The output should be similar to
pip 21.2.4. -
To install the
mercurialPython 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-repodirectory, 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.txtfile, 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.txtfile 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 %}