先决条件
要按照这些步骤操作,您必须使用 macOS 或 Linux 系统,并安装以下工具:
- Mercurial
- Git
- Git 大型文件存储 (Git LFS)(请参阅“安装 Git 大型文件存储”)
- Python,包括
pip
包管理器
导入 Mercurial 代码库
-
在 GitHub 上创建一个新的代码库。为避免错误,请不要使用 README、许可证或 gitignore 文件初始化新的代码库。项目推送到 GitHub 后,您可以添加这些文件。有关更多信息,请参阅“创建新的代码库”。
-
要确认 Mercurial 是否已安装在您的计算机上,请运行
hg --version
。输出应类似于
Mercurial Distributed SCM (version 6.4)
。 -
要确认 Git 是否已安装在您的计算机上,请运行
git --version
。输出应类似于
git version 2.40.0
。 -
要确认 Git LFS 是否已安装在您的计算机上,请运行
git lfs --version
。输出应类似于
git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1)
。 -
要确认
pip
是否已安装在您的计算机上,请运行pip --version
。输出应类似于
pip 21.2.4
。 -
要安装
mercurial
Python 包,请运行pip install mercurial
。 -
将 fast-export 的最新版本下载到您的计算机上,然后解压缩存档。
-
进入解压缩的目录,然后运行
./hg-fast-export.sh --help
。输出应以
usage: hg-fast-export.sh
开头。 -
克隆您的 Mercurial 代码库。
例如,要将 Mercurial 本身的源代码克隆到
mercurial-repo
目录,请运行hg clone https://www.mercurial-scm.org/repo/hg mercurial-repo
。 -
创建一个新目录,进入新目录,然后初始化一个新的 Git 代码库。
例如,如果您想将新的代码库命名为
mercurial-git
,请运行mkdir mercurial-git && cd mercurial-git && git init
。 -
进入新创建的 Git 代码库的目录。
-
要配置新的 Git 代码库以与 Mercurial 以相同方式处理文件名的情况,请运行
git config core.ignoreCase false
。 -
要获取 Mercurial 项目中的提交者列表并将列表存储在
committers.txt
中,请运行以下脚本。Shell hg log --template "{author}\n" | sort | uniq > committers.txt
hg log --template "{author}\n" | sort | uniq > committers.txt
-
更新您的
committers.txt
文件,使用以下格式将 Mercurial 代码库中使用的提交者名称映射到您想要在 Git 代码库中使用的名称:“The Octocat <[email protected]>”=”Octocat <[email protected]>”
-
在已初始化的 Git 代码库中,运行
hg-fast-export.sh
,传入 Mercurial 代码库的路径和committers.txt
文件的路径作为参数。例如,
../fast-export-221024/hg-fast-export.sh -r ../mercurial-repo -A ../mercurial-repo/committers.txt -M main
。 -
导入完成后,要检出新创建的 Git 代码库,请运行
git checkout HEAD
。 -
要将您的 GitHub 代码库添加为远程代码库,请运行
git remote add origin URL
,将URL
替换为您之前创建的 GitHub 代码库的 URL,例如https://github.com/octocat/example-repository.git
。 -
要将代码库推送到 GitHub,请运行
git push --mirror origin
。如果您的代码库包含任何大于 GitHub 文件大小限制的文件,则您的推送可能会失败。通过运行
git lfs import
将大型文件移动到 Git LFS,然后重试。