Чтобы выполнить следующие действия, необходимо использовать систему macOS или Linux и установить следующие средства:
- Ртутный
- Git
- Хранилище больших файлов Git (Git LFS) (см. раздел Установка хранилища больших файлов Git)
- Python, включая
pip
диспетчер пакетов
Создайте новый репозиторий на . Чтобы избежать ошибок, не инициализировать новый репозиторий с помощью README, лицензий или файлов Gitignore. Эти файлы можно добавить после отправки проекта в . Дополнительные сведения см. в разделе Создание репозитория.
Чтобы убедиться, что 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 (; 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 <[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 checkout HEAD
созданный репозиторий Git.Чтобы добавить репозиторий в качестве удаленного, выполните команду
git remote add origin URL
, заменивURL
URL-адрес для созданного ранее репозитория .https://.com/octocat/example-repository.git
Чтобы отправить репозиторий в , выполните команду
git push --mirror origin
.Если репозиторий содержит все файлы, размер которых превышает , отправка может завершиться ошибкой. Переместите большие файлы на Git LFS , выполнив команду
git lfs import
, а затем повторите попытку.