Необходимые компоненты
Чтобы выполнить следующие действия, необходимо использовать систему 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.txthg 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. -
Чтобы добавить репозиторий GitHub в качестве удаленного, выполните команду
git remote add origin URL, заменивURLURL-адрес для созданного ранее репозитория GitHub .https://github.com/octocat/example-repository.git -
Чтобы отправить репозиторий в GitHub, выполните команду
git push --mirror origin.Если репозиторий содержит все файлы, размер которых превышает GitHub, отправка может завершиться ошибкой. Переместите большие файлы на Git LFS , выполнив команду
git lfs import, а затем повторите попытку.