Skip to main content

Импорт репозитория Mercurial

Вы можете импортировать репозиторий из Mercurial, преобразовав репозиторий в Git, а затем отправьте репозиторий Git в GitHub Enterprise Server.

Необходимые компоненты

Чтобы выполнить следующие действия, необходимо использовать систему macOS или Linux и установить следующие средства:

Импорт репозитория Mercurial

  1. Создайте новый репозиторий на GitHub. Чтобы избежать ошибок, не инициализировать новый репозиторий с помощью README, лицензий или файлов Gitignore. Эти файлы можно добавить после отправки проекта в GitHub Enterprise Server. Дополнительные сведения см. в разделе «Создание репозитория».

  2. Чтобы убедиться, что Mercurial установлен на компьютере, выполните команду hg --version.

    Выходные данные должны быть похожи Mercurial Distributed SCM (version 6.4)на .

  3. Чтобы убедиться, что на компьютере установлена Git, выполните команду git --version.

    Выходные данные должны быть похожи git version 2.40.0на .

  4. Чтобы убедиться, что на компьютере git lfs --versionустановлен Git LFS .

    Выходные данные должны быть похожи git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1)на .

  5. Чтобы убедиться, что pip на компьютере установлено, выполните команду pip --version.

    Выходные данные должны быть похожи pip 21.2.4на .

  6. Чтобы установить mercurial пакет Python, выполните команду pip install mercurial.

  7. Скачайте последний выпуск быстрого экспорта на компьютер, а затем извлеките архив.

  8. Перейдите в извлеченный каталог, а затем запустите ./hg-fast-export.sh --help.

    Выходные данные должны начинаться с usage: hg-fast-export.sh.

  9. Клонируйте репозиторий Mercurial.

    Например, чтобы клонировать исходный код Mercurial в mercurial-repo каталог, выполните команду hg clone https://www.mercurial-scm.org/repo/hg mercurial-repo.

  10. Создайте новый каталог, перейдите в новый каталог, а затем инициализирует новый репозиторий Git.

    Например, если вы хотите назвать новый репозиторий mercurial-git, выполните команду mkdir mercurial-git && cd mercurial-git && git init.

  11. Чтобы настроить новый репозиторий Git для обработки регистра имен файлов таким же образом, как и Mercurial, выполните команду git config core.ignoreCase false.

  12. Чтобы получить список фиксаций в проекте Mercurial и сохранить этот список committers.txt, выполните следующий скрипт.

    Shell
    hg log --template "{author}\n" | sort | uniq > committers.txt
    
  13. Обновите committers.txt файл, сопоставляя имя фиксации, используемое в репозитории Mercurial, с именем, которое вы хотите использовать в репозитории Git, с следующим форматом:

    “The Octocat <octocato@gmail.com>”=”Octocat <octocat@github.com>”
    
  14. В инициализированном репозитории 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.

  15. После завершения импорта запустите git checkout HEADсозданный репозиторий Git.

  16. Чтобы добавить репозиторий GitHub в качестве удаленного, выполните командуgit remote add origin URL, заменив URL URL-адрес для созданного ранее репозитория GitHub .https://github.com/octocat/example-repository.git

  17. Чтобы отправить репозиторий в GitHub, выполните команду git push --mirror origin.

    Если репозиторий содержит все файлы, размер которых превышает GitHub Enterprise Server, может завершиться ошибкой. Переместите большие файлы на Git LFS , выполнив команду git lfs import, а затем повторите попытку.