Skip to main content

Migrate your repositories from GitLab to GitHub

Perform a trial run and then migrate your repositories from GitLab to GitHub.

Run your migration

Статья 6 из 7
Следующий:Follow-up tasks

В этой статье

Prerequisites

  • You must have completed all previous phases of this guide.
  • The GitLab project must be enabled for exports. See Enable project export and Sidekiq configuration for imports in the GitLab documentation.
  • Убедитесь, что вы понимаете данные, которые будут перенесены, и известные ограничения поддержки импорта. For more information, see Understand migrations from GitLab to GitHub.
  • Хотя и не требуется, рекомендуется остановить работу во время рабочей миграции. Importer не поддерживает разностную миграцию, поэтому любые изменения, которые происходят во время миграции, не будут переноситься. Если вы решили не останавливать работу во время рабочей миграции, необходимо вручную перенести эти изменения.

Performing a trial run

Чтобы выявить проблемы, которые могут быть уникальны для вашего предприятия, мы настоятельно рекомендуем провести пробный запуск вашей миграции. На пробном запуске вы узнаете:

  • Может ли миграция для конкретного репозитория успешно завершиться.
  • Сможете ли вы вернуть мигрированный репозиторий в рабочее состояние.
  • Сколько времени займёт миграция?

Пробные запуски могут проводиться в любое время, и работа не обязательно останавливается во время миграции. Чтобы сократить время, необходимое для завершения миграции пробных версий, можно запланировать пакеты для пробной версии. Пользователи этих репозиториев могут проверять результаты самостоятельно.

  1. Create a test organization for your trial migrations.

    You can use a single organization for all trial runs, or you can create one test organization for each intended destination organization. Consider including -sandbox at the end of the organization names, to clarify that the organizations are intended only for migration validation and not for production. You can delete the test organizations after you're done.

  2. Run the trial migrations.

  3. Confirm that you are able to complete the follow-up tasks in Follow-up tasks.

  4. Ask users to validate the results of the migrations.

  5. Resolve any issues uncovered by your trial migrations.

  6. При необходимости удалите тестовую организацию.

Migrating a single repository

To migrate one repository, use the gh gl2gh migrate-repo command.

Shell
gh gl2gh migrate-repo \
  --gitlab-server-url GITLAB_SERVER_URL \
  --gitlab-group SOURCE_GROUP \
  --gitlab-project SOURCE_PROJECT \
  --github-org DESTINATION \
  --github-repo NEW_REPO_NAME \
  --use-github-storage

Replace the placeholders in the command above with the following values.

PlaceholderValue
GITLAB_SERVER_URLThe full URL of your GitLab instance, such as https://gitlab.com or https://gitlab.example.com.
SOURCE_GROUPThe full path of the group or namespace that contains the project. For nested subgroups, use the full path, such as parent-group/subgroup.
SOURCE_PROJECTThe GitLab project to migrate.
DESTINATIONThe destination organization on GitHub.
NEW_REPO_NAMEThe name for the repository on GitHub.

If you are not using GitHub-owned blob storage, see Configure blob storage.

Additional arguments

ArgumentDescription
--target-repo-visibilitySets the visibility of the new repository to public, private, or internal. Defaults to private.
--target-api-url TARGET-API-URLЕсли вы переносите данные GHE.com, добавьте --target-api-url TARGET-API-URL, где TARGET-API-URL является базовым URL-адресом API для поддомена предприятия. Например: https://api.octocorp.ghe.com.
--target-uploads-url TARGET-UPLOADS-URLIf you're migrating to GHE.com and using GitHub-owned blob storage, also add --target-uploads-url TARGET-UPLOADS-URL, where TARGET-UPLOADS-URL is the base uploads API URL for your enterprise's subdomain. For example: https://uploads.octocorp.ghe.com. This defaults to https://uploads.github.com.
--no-ssl-verifyDisables SSL verification when the GL2GH extension talks to your GitLab instance. Use this only if your GitLab instance uses a self-signed certificate. All other steps still verify SSL.
--archive-url URLImports a previously exported archive from a URL, instead of exporting the project from GitLab again.
--archive-path PATHImports a previously exported archive from a local file path, instead of exporting the project from GitLab again.
--keep-archiveRetains the export archive locally instead of deleting it after a successful upload.

Generating a migration script

If you want to migrate multiple repositories to GitHub Enterprise Cloud at once, use the GitHub CLI to generate a migration script. The resulting script contains one migrate-repo command per repository.

To generate a migration script, run the gh gl2gh generate-script command.

Shell
gh gl2gh generate-script \
  --gitlab-server-url GITLAB_SERVER_URL \
  --github-org DESTINATION \
  --output FILENAME \
  --use-github-storage

Replace the placeholders in the command above with the following values.

PlaceholderValue
GITLAB_SERVER_URLThe full URL of your GitLab instance, such as https://gitlab.com or https://gitlab.example.com.
DESTINATIONThe destination organization on GitHub.
FILENAMEИмя файла для результирующего скрипта миграции

Если вы используете терминал, используйте .ps1 расширение файла в качестве созданного скрипта, чтобы запустить PowerShell. Вы можете установить PowerShell для Mac или Linux.

By default, the script includes every project the token can access. To scope the script, add --gitlab-group GROUP, or --gitlab-group GROUP --gitlab-project PROJECT for a single project.

If you are not using GitHub-owned blob storage, see Configure blob storage.

Additional arguments

ArgumentDescription
--target-api-url TARGET-API-URLЕсли вы переносите данные GHE.com, добавьте --target-api-url TARGET-API-URL, где TARGET-API-URL является базовым URL-адресом API для поддомена предприятия. Например: https://api.octocorp.ghe.com.
--target-uploads-url TARGET-UPLOADS-URLIf you're migrating to GHE.com and using GitHub-owned blob storage, also add --target-uploads-url TARGET-UPLOADS-URL, where TARGET-UPLOADS-URL is the base uploads API URL for your enterprise's subdomain. For example: https://uploads.octocorp.ghe.com. This defaults to https://uploads.github.com.

Reviewing the migration script

After you generate the script, review the file and, optionally, edit the script.

  • If there are any repositories you don't want to migrate, delete or comment out the corresponding lines.
  • If you want any repositories to have a different name in the destination organization, update the value for the corresponding --github-repo flag.
  • If you want to change the visibility of a new repository, add or update the corresponding --target-repo-visibility flag.

Migrate repositories

If your trial run was successful, and you were able to complete the follow-up tasks, you can proceed to the real migration.

Предупреждение

We recommend halting work in the repositories you are migrating. Any changes made during or after the migration will need to be manually migrated.

Run the script you generated. Replace FILENAME in the commands below with the filename you provided when generating the script.

  • If you're using Terminal, use ./.

    Shell
    ./FILENAME
    
  • If you're using PowerShell, use .\.

    Shell
    .\FILENAME