Необходимые компоненты
Чтобы выполнить следующие действия, необходимо использовать систему macOS или Linux и установить следующие средства:
- Ртутный
- 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 --version
установлен Git LFS .Выходные данные должны быть похожи
git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1)
на . -
Чтобы убедиться, что
pip
на компьютере установлено, выполните командуpip --version
.Выходные данные должны быть похожи
pip 21.2.4
на . -
Чтобы установить
mercurial
пакет Python, выполните командуpip install mercurial
. -
Скачайте последний выпуск быстрого экспорта на компьютер, а затем извлеките архив.
-
Перейдите в извлеченный каталог, а затем запустите
./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 для обработки регистра имен файлов таким же образом, как и 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 <octocato@gmail.com>”=”Octocat <octocat@github.com>”
-
В инициализированном репозитории 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 checkout HEAD
созданный репозиторий Git. -
Чтобы добавить репозиторий GitHub в качестве удаленного, выполните команду
git remote add origin URL
, заменивURL
URL-адрес для созданного ранее репозитория GitHub .https://github.com/octocat/example-repository.git
-
Чтобы отправить репозиторий в GitHub, выполните команду
git push --mirror origin
.Если репозиторий содержит все файлы, размер которых превышает GitHub, может завершиться ошибкой. Переместите большие файлы на Git LFS , выполнив команду
git lfs import
, а затем повторите попытку.