# Общие сведения о миграции из 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](/ru/enterprise-cloud@latest/enterprise-onboarding/getting-started-with-your-enterprise/choose-an-enterprise-type).

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

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

GitHub Enterprise Importer поддерживает в настоящее время поддерживаемые версии GitLab (без окончания срока жизни). Список поддерживаемых версий см. в разделе ["Заявление о поддержке](https://docs.gitlab.com/policy/maintenance/) " в документации по GitLab. Старые версии не были протестированы или оценены.

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

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

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

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

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

* Git LFS (Git Large File Storage — поддержка хранения больших файлов в Git) объекты: файлы указателя перемещаются с журналом Git, но двоичные объекты должны быть отправлены в место миграции отдельно в качестве последующей задачи. Дополнительные сведения см. в разделе [Дублирование репозиториев](/ru/repositories/creating-and-managing-repositories/duplicating-a-repository#mirroring-a-repository-that-contains-git-large-file-storage-objects).
* Политики репозитория, включая поезда слияния, шлюзы конвейера, необходимые утверждения, разделы, аватары и зеркальное отображение
* Параметры группы и членство в группах
* Фрагменты, доски выдачи, данные отслеживания времени и данные управления проектированием
* Конвейеры 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](https://github.com/github/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 и может отличаться для самоуправляемых экземпляров.