Skip to main content

Перенос репозиториев из GitLab в GitHub

Выполните пробную версию, а затем перенесите репозитории из GitLab в GitHub.

Необходимые условия

  • Вы должны были пройти все предыдущие этапы этого руководства.
  • Для экспорта необходимо включить проект GitLab. См. раздел "Включить экспорт проекта " и конфигурацию Sidekiq для импорта в документации по GitLab.
  • Убедитесь, что вы понимаете данные, которые будут перенесены, и известные ограничения поддержки импорта. Для получения дополнительной информации см. Общие сведения о миграции из GitLab в GitHub.
  • Хотя и не требуется, рекомендуется остановить работу во время рабочей миграции. Importer не поддерживает разностную миграцию, поэтому любые изменения, которые происходят во время миграции, не будут переноситься. Если вы решили не останавливать работу во время рабочей миграции, необходимо вручную перенести эти изменения.

Выполнение пробного запуска

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

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

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

  1. Создайте тестовую организацию для пробной миграции.

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

  2. Запустите пробные миграции.

  3. Убедитесь, что вы можете выполнить последующие задачи в AUTOTITLE.

  4. Попросите пользователей проверить результаты миграции.

  5. Устраните все проблемы, обнаруженные миграцией пробной версии.

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

Перенос одного репозитория

Чтобы перенести один репозиторий gh gl2gh migrate-repo , используйте команду.

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

Замените заполнители в приведенной выше команде следующими значениями.

PlaceholderЦенность
GITLAB_SERVER_URLПолный URL-адрес экземпляра GitLab, например https://gitlab.com или https://gitlab.example.com.
SOURCE_GROUPПолный путь к группе или пространству имен, который содержит проект. Для вложенных подгрупп используйте полный путь, например parent-group/subgroup.
SOURCE_PROJECTПроект GitLab для миграции.
НАЗНАЧЕНИЯЦелевая организация GitHubв .
NEW_REPO_NAMEИмя репозитория GitHubв .

Если вы не используете GitHub-owned blob storage, см. раздел AUTOTITLE.

Дополнительные аргументы

ArgumentDescription
--target-repo-visibilityЗадает видимость нового репозитория publicдля , privateили internal. По умолчанию — 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-URLЕсли вы выполняете миграцию GHE.com и используете GitHub-owned blob storage, также добавьте --target-uploads-url TARGET-UPLOADS-URL, где target-UPLOADS-URL — это URL-адрес API для поддомена предприятия. Например: https://uploads.octocorp.ghe.com. Значение по умолчанию — это https://uploads.github.com.
--no-ssl-verifyОтключает проверку SSL при выполнении переговоров с экземпляром GL2GH extension GitLab. Используйте это только в том случае, если экземпляр GitLab использует самозаверяющий сертификат. Все остальные шаги по-прежнему проверяют SSL.
--archive-url URLИмпортирует ранее экспортируемый архив из URL-адреса, а не экспорт проекта из GitLab еще раз.
--archive-path PATHИмпортирует ранее экспортируемый архив из локального пути к файлу, а не экспорт проекта из GitLab еще раз.
--keep-archiveСохраняет архив экспорта локально, а не удаляет его после успешной отправки.

Создание скрипта миграции

Если вы хотите перенести несколько репозиториев GitHub Enterprise Cloud в один раз, используйте GitHub CLI его для создания скрипта миграции. Результирующий скрипт содержит одну migrate-repo команду для каждого репозитория.

Чтобы создать скрипт миграции, выполните gh gl2gh generate-script команду.

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

Замените заполнители в приведенной выше команде следующими значениями.

PlaceholderЦенность
GITLAB_SERVER_URLПолный URL-адрес экземпляра GitLab, например https://gitlab.com или https://gitlab.example.com.
НАЗНАЧЕНИЯЦелевая организация GitHubв .
FILENAMEИмя файла для результирующего скрипта миграции

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

По умолчанию скрипт включает каждый проект, к которым может получить доступ маркер. Чтобы задать область действия скрипта, добавьте --gitlab-group GROUPили --gitlab-group GROUP --gitlab-project PROJECT для одного проекта.

Если вы не используете GitHub-owned blob storage, см. раздел AUTOTITLE.

Дополнительные аргументы

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-URLЕсли вы выполняете миграцию GHE.com и используете GitHub-owned blob storage, также добавьте --target-uploads-url TARGET-UPLOADS-URL, где target-UPLOADS-URL — это URL-адрес API для поддомена предприятия. Например: https://uploads.octocorp.ghe.com. Значение по умолчанию — это https://uploads.github.com.

Просмотр скрипта миграции

После создания скрипта просмотрите файл и, при необходимости, измените скрипт.

  • Если есть какие-либо репозитории, которые вы не хотите перенести, удалить или закомментировать соответствующие строки.
  • Если в целевой организации есть другое имя репозиториев, обновите значение соответствующего --github-repo флага.
  • Если вы хотите изменить видимость нового репозитория, добавьте или обновите соответствующий --target-repo-visibility флаг.

Перенос репозиториев

Если ваш пробный запуск прошёл успешно и вы смогли выполнить последующие задачи, можно перейти к реальной миграции.

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

Рекомендуем приостановить работу в репозиториях, которые вы переносите. Любые изменения, внесённые во время или после миграции, нужно будет мигрировать вручную.

Запустите созданный скрипт. Замените FILENAME в приведенных ниже командах именем файла, указанным при создании скрипта.

  • Если вы используете терминал, используйте ./.

    Shell
    ./FILENAME
    
  • Если вы используете PowerShell, используйте .\.

    Shell
    .\FILENAME