Skip to main content

Общие сведения о миграции из GitLab в GitHub

GitHub Enterprise Importer автоматизирует миграцию из GitLab.

Сведения о миграции из GitLab

Можно использовать GitHub Enterprise Importer для переноса репозиториев из GitLab в GitHub Enterprise Cloud (GitHub.com или GHE.com).

Миграция выполняется с GL2GH extension of the GitHub CLIкроссплатформенной оболочкой командной строки вокруг GitHub API миграции. Для каждого репозитория :GL2GH extension

  1. Экспортирует проект .tar.gz GitLab в архив, содержащий репозиторий Git, а также метаданные проекта (например, проблемы, запросы слияния, метки, вехи и выпуски).
  2. Выполняет архивацию локально на компьютере, где выполняется команда.
  3. Отправляет архив в хранилище BLOB-объектовGitHub, которое GitHub-owned blob storage может прочитать (или учетную запись хранения, которую вы владеете в AWS S3 или Хранилище BLOB-объектов Azure).
  4. Импортирует архив в целевую организацию, преобразуя сущности GitLab в их GitHub эквиваленты.

Прежде чем создавать корпоративный аккаунт GitHub, решите, будет ли ваше предприятие использовать Enterprise Managed Users. Это влияет на то, как ваши участники проходят аутентификацию и как вы управляете идентификацией и доступом. См . раздел AUTOTITLE.

Поддерживаемые версии GitLab

Вы можете выполнить миграцию из GitLab.com и автономных экземпляров GitLab.

GitHub Enterprise Importer поддерживает в настоящее время поддерживаемые версии GitLab (без окончания срока жизни). Список поддерживаемых версий см. в разделе "Заявление о поддержке " в документации по GitLab. Старые версии не были протестированы или оценены.

Данные, перенесенные

Когда данные присутствуют в архиве экспорта GitLab, GitHub Enterprise Importer переносит следующие данные из GitLab GitHub Enterprise Cloudв .

  • Источник Git (включая журнал фиксаций) и вики-сайт репозитория
  • Комментарии к коммиту
  • Project конфигурации, которая четко сопоставляется, например ветвь по умолчанию
  • Проблемы и комментарии, включая события состояния проблемы и вехи
    • Потоковые обсуждения переносятся в виде неструктурированных комментариев с контекстом исходного потока
  • Запросы слияния, которые преобразуются в запросы на вытягивание, включая:
    • Примечания (перенесенные в виде комментариев проверки только при наличии данных диффа, в противном случае как неструктурированные комментарии о проблемах; в экспорте присутствует только последний дифф)
    • Рецензенты и утверждающие
    • События состояния запроса слияния
  • Вехи
  • События временной шкалы
  • Реакции эмодзи
  • Отправка (вложения)
  • Выпуски и ресурсы выпуска
  • Project члены (перенесенные как манекены)

Данные, которые не переносятся

Следующие данные не переносятся.

  • Git LFS (Git Large File Storage — поддержка хранения больших файлов в Git) объекты: файлы указателя перемещаются с журналом Git, но двоичные объекты должны быть отправлены в место миграции отдельно в качестве последующей задачи. Дополнительные сведения см. в разделе Дублирование репозиториев.
  • Политики репозитория, включая поезда слияния, шлюзы конвейера, необходимые утверждения, разделы, аватары и зеркальное отображение
  • Параметры группы и членство в группах
  • Фрагменты, доски выдачи, данные отслеживания времени и данные управления проектированием
  • Конвейеры CI/CD и расписания конвейеров (.gitlab-ci.yml не имеют автоматического эквивалента GitHub Actions )
  • Отчеты об уязвимостях
  • Данные, которые GitLab вообще не включаются в экспорт, такие как веб-перехватчики, переменные CI/CD, трассировки заданий и артефакты, журнал дочерних конвейеров и триггеры конвейера

Ограничения для перенесенных данных

Существуют пределы того, что GitHub Enterprise Importer может мигрировать. Некоторые из них обусловлены ограничениями GitHub, другие — ограничениями GitHub Enterprise Importer сами по себе.

Ограничения GitHub

  • Ограничение размера 2 ГиБ для одного коммита Git: Размер отдельного коммита в репозитории Git не должен превышать 2 ГиБ. Если размер любого из ваших коммитов превышает 2 ГиБ, вам нужно будет разделить коммит на более мелкие коммиты, каждый из которых имеет размер 2 ГиБ или меньше.
  • Ограничение размера 2 ГиБ для одной отправки: Ни одна отправка не может быть больше 2 ГиБ. Более крупные push-уведомления завершаются ошибкой pack exceeds maximum allowed size .
  • Ограничение в 255 байт для ссылок на Git: Ни одна ссылка на Git, обычно называемая «ref», не может иметь имя больше 255 байт. Обычно это означает, что ваши ссылки не могут превышать 255 символов, но любые не-ASCII символы, такие как эмодзи, могут потреблять более одного байта. Если какая-либо из ссылок на Git слишком велика, мы вернем четкое сообщение об ошибке.
  • Ограничение на размер файла 100 МиБ: После завершения миграции размер отдельного файла в репозитории Git не должен превышать 100 МиБ. Во время миграции репозитория этот лимит увеличивается до 400 МиБ. Рассмотрите возможность Git LFS (Git Large File Storage — поддержка хранения больших файлов в Git) хранения больших файлов.

Ограничения GitHub Enterprise Importer

  • Ограничение размера 40 ГБ для репозитория Git (Публичный предварительный просмотр): это ограничение применяется только к исходному коду. Чтобы проверить, превышает ли архив репозитория ограничение, используйте средство git-sizer и просмотрите общий размер большого двоичного объекта в выходных данных. Средство git-sizer также помогает определить потенциальные проблемы, связанные с большими файлами, размером больших двоичных объектов, размером фиксации и числом деревьев, которые могут повлиять на миграцию.
  • Ограничение размера файла до 400 МиБ: При миграции репозитория с GitHub Enterprise Importer, ни один файл в вашем Git-репозитории не может быть больше 400 МиБ. Рассмотрите возможность Git LFS (Git Large File Storage — поддержка хранения больших файлов в Git) хранения больших файлов.
  • Git LFS (Git Large File Storage — поддержка хранения больших файлов в Git) объекты, не мигрированные: Они Importer могут мигрировать в репозитории, использующие Git LFS (Git Large File Storage — поддержка хранения больших файлов в Git), но сами объекты LFS не будут мигрированы. Их можно отправить в место назначения миграции в качестве последующей задачи после завершения миграции.
  • Функции поиска отложенного кода: повторное индексирование индекса поиска может занять несколько часов после переноса репозитория, а поиски кода могут возвращать непредвиденные результаты до завершения повторной индексации.
  • Наборы правил, настроенные для вашей организации, могут привести к сбою миграции: например, если вы настроили правило, требующее адреса электронной почты для автор фиксации @monalisa.catзаканчиваться, а репозиторий, с которым вы переносите, содержит фиксации, которые не соответствуют этому правилу, миграция завершится ошибкой.
  • Содержимое манекена может быть недоступен для поиска: Манекены являются заполнителями пользователей, к которым связан импортированный контент (например, проблемы, запросы на вытягивание, комментарии и т. д.). При поиске содержимого, связанного с манекеном, например назначенными проблемами, проблемы могут быть не найдены. После восстановления манекена содержимое должно быть найдено с помощью нового владельца.

Ограничения GitLab

  • Ограничение в 40 ГБ для архива экспорта GitLab: API экспорта проекта GitLab не будет создавать архив размером более 40 ГБ на GitLab.com. GitHub В отличие от ограничения размера источника, это относится ко всему архиву экспорта, включая метаданные проекта, а также источник Git. Это ограничение задается GitLab и может отличаться для самоуправляемых экземпляров.