Сведения о миграции из GitLab
Можно использовать GitHub Enterprise Importer для переноса репозиториев из GitLab в GitHub Enterprise Cloud (GitHub.com или GHE.com).
Миграция выполняется с GL2GH extension of the GitHub CLIкроссплатформенной оболочкой командной строки вокруг GitHub API миграции. Для каждого репозитория :GL2GH extension
- Экспортирует проект
.tar.gzGitLab в архив, содержащий репозиторий Git, а также метаданные проекта (например, проблемы, запросы слияния, метки, вехи и выпуски). - Выполняет архивацию локально на компьютере, где выполняется команда.
- Отправляет архив в хранилище BLOB-объектовGitHub, которое GitHub-owned blob storage может прочитать (или учетную запись хранения, которую вы владеете в AWS S3 или Хранилище BLOB-объектов Azure).
- Импортирует архив в целевую организацию, преобразуя сущности 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 и может отличаться для самоуправляемых экземпляров.