О миграциях репозиториев с GitHub Enterprise Importer
Миграцию можно выполнить с помощью GitHub CLI или API.
GitHub CLI упрощает процесс миграции и рекомендуется для большинства клиентов. Расширенные клиенты с большими потребностями настройки могут использовать API для создания собственных интеграции с GitHub Enterprise Importer.
Если вы решили использовать API, вам потребуется написать собственные скрипты или использовать HTTP-клиент, такой как бессонница. Вы можете узнать больше о начале работы с GitHubAPI 's в Начало работы с REST API и AUTOTITLE.
Чтобы перенести ваши репозитории из GitHub Enterprise Server в GitHub Enterprise Cloud с помощью API, вы следуете:
- Создайте personal access token как для исходной, так и для организации назначения
- Выведите
ownerIdорганизацию назначения на GitHub Enterprise Cloud - Настройте исходный код миграции через GitHubAPI GraphQL от ', чтобы определить, откуда вы переходите
- Для каждого репозитория, который требуется перенести, повторите эти действия.
- Используйте REST API для экземпляр GitHub Enterprise Server генерации архивов миграции для вашего репозитория
- Загрузите ваши архивы миграции в место, где к ним можно получить доступ GitHub
- Запустите миграцию с помощью API GraphQL для назначения миграции, передавая URL-адреса архива
- Проверьте состояние миграции с помощью API GraphQL
- Проверка миграции и проверка журнала ошибок
Чтобы просмотреть инструкции по использованию API, используйте переключатель инструментов в верхней части страницы.
Чтобы просмотреть инструкции по использованию GitHub CLI, используйте переключатель инструментов в верхней части страницы.
Если в целевой организации или предприятии включены наборы правил, история мигрированного репозитория может нарушать эти правила. Чтобы позволить миграцию без отключения ваших правил, добавьте «Миграции репозитория» в список обхода для каждого применимого набора правил. Этот обход действует только во время миграции. После завершения правила будут применяться ко всем новым взносам.
Для настройки обхода:
- Перейдите к каждому набору правил для каждого предприятия или организации.
- В разделе «Список обхода» нажмите « Добавить обход».
- Выберите миграции репозиторий.
Дополнительные сведения см. в разделе [AUTOTITLE и Создание наборов правил для репозиториев в организации](/enterprise-cloud@latest/migrations/troubleshooting/setting-ruleset-bypasses-for-repository-migrations).
Необходимые компоненты
- Настоятельно рекомендуется выполнить пробную версию миграции и завершить рабочую миграцию в ближайшее время. Дополнительные сведения о пробных запусках см. в разделе Обзор миграции между продуктами GitHub.
- Убедитесь, что вы понимаете данные, которые будут перенесены, и известные ограничения поддержки импорта. Для получения дополнительной информации см. О миграциях между GitHub продуктами с GitHub Enterprise Importer.
- Хотя и не требуется, рекомендуется остановить работу во время рабочей миграции. Importer не поддерживает разностную миграцию, поэтому любые изменения, которые происходят во время миграции, не будут переноситься. Если вы решили не останавливать работу во время рабочей миграции, необходимо вручную перенести эти изменения.
- В исходных и конечных организациях необходимо либо владелец организации, либо предоставить роль миграции. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами GitHub.
- Если вы используете GitHub Enterprise Server версию 3.8 или выше для настройки blob storage для экспортируемых архивов, вам нужен доступ к Консоль управления.
Шаг 1. Создайте свой personal access token
- Создайте и запишите personal access token (classic), которая будет проходить проверку подлинности для целевой организации на GitHub Enterprise Cloud, убедившись, что маркер соответствует всем требованиям. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами GitHub.
- Создайте и запишите personal access token, которая будет проходить проверку подлинности для исходной организации, убедившись, что этот маркер также соответствует всем одинаковым требованиям.
Шаг 2. Получение ownerId целевой организации
В качестве владелец организации в GitHub Enterprise Cloudиспользуйте GetOrgInfo запрос для возврата ownerIdидентификатора организации, которая также называется идентификатором организации, для которой требуется принадлежать перенесенные репозитории. Вам потребуется ownerId определить назначение миграции.
GetOrgInfo запрос
query(
$login: String!
){
organization (login: $login)
{
login
id
name
databaseId
}
}
| Переменная запроса | Description |
|---|---|
login | Имя вашей организации. |
GetOrgInfo ответ
{
"data": {
"organization": {
"login": "Octo",
"id": "MDEyOk9yZ2FuaXphdGlvbjU2MTA=",
"name": "Octo-org",
"databaseId": 5610
}
}
}
В этом примере MDEyOk9yZ2FuaXphdGlvbjU2MTA= — это идентификатор организации или ownerIdидентификатор организации, который мы будем использовать на следующем шаге.
Шаг 3. Настройка хранилища BLOB-объектов
При миграции репозитория необходимо хранить данные репозитория в месте, куда GitHub Enterprise Importer можно получить доступ. Это можно сделать, выполнив следующие действия.
- Использование локального хранилища в экземпляре GHES (GHES 3.16 и более поздних версий)
- Использование поставщика хранилища BLOB-объектов
Использование локального хранилища (GHES 3.16+)
При выполнении миграции с локальным хранилищем архивные данные записываются на диск на экземпляр GitHub Enterprise Server, не требуя поставщика облачного хранилища.
- Если у вас нет правил брандмауэра, блокирующих исходящий трафик из GitHub Enterprise Server, GitHub Enterprise Importer может автоматически получить сохраненный архив из GitHub Enterprise Server.
- Если у вас есть правила брандмауэра и нет необходимости разрешать доступ к GitHub Enterprise Importer, вы можете передать архивные данные в GitHub-owned blob storage для доступа к GitHub Enterprise Importer. Чтобы сделать это вручную, см. статью "Отправка архивов миграции в хранилище BLOB-объектов, принадлежащих GitHub" в версии API этой статьи.
- В учетной записи администратора GitHub Enterprise Server, в правом верхнем углу любой страницы щелкните .
- На боковой панели " "Администратор сайта" щелкните Консоль управления.
- Войдите в Консоль управления.
- На левой боковой панели щелкните "Миграции".
- Нажмите кнопку "Включить" GitHub Миграции.
- В разделе "Хранилище миграций" щелкните "Локальное хранилище".
- Нажмите кнопку Сохранить параметры.
При выполнении миграции отслеживайте место на диске на GitHub Enterprise Server. Архивы миграции автоматически удаляются через 7 дней. Чтобы освободить место, можно удалить архив с помощью Конечные точки REST API для миграции организации.
Использование поставщика хранилища BLOB-объектов
Если ваш GitHub Enterprise Server экземпляр находится за межсетевым экраном, возможно, придётся настроить blob storage с внешним облачным сервисом.
Сначала необходимо настроить хранилище BLOB-объектов с помощью поддерживаемого поставщика. Затем, если вы используете облачного провайдера, необходимо настроить учетные данные для провайдера хранения в Консоль управления или GitHub CLI.
GitHub CLI поддерживает следующие поставщики хранилища BLOB-объектов:
- Amazon Web Services (AWS) S3
- хранилище BLOB-объектов Azure
Примечание.
Настройка blob storage нужно только если вы используете GitHub Enterprise Server версии 3.8 или выше. Если вы используете GitHub Enterprise Server версии 3.7 или ниже, перейдите к шагу 4: Настройте исходник миграции в GitHub Enterprise Cloud.
Хранилище BLOB-объектов требуется для переноса репозиториев с большим источником или метаданными Git. Если вы используете GitHub Enterprise Server версии 3.7 или ниже, вы не сможете выполнять миграции, если экспорт исходного или метаданных вашего Git превышает 2 ГБ. Для выполнения этих миграций обновитесь до GitHub Enterprise Server версий 3.8 или выше.
Настройка контейнера хранилища AWS S3
В AWS настройте контейнер S3. Дополнительные сведения см. в разделе "Создание контейнера " в документации ПО AWS.
Вам также потребуется ключ доступа AWS и секретный ключ со следующими разрешениями:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucketMultipartUploads",
"s3:AbortMultipartUpload",
"s3:ListBucket",
"s3:DeleteObject",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::github-migration-bucket",
"arn:aws:s3:::github-migration-bucket/*"
]
}
]
}
Примечание.
GitHub Enterprise Importer не удаляет архив из AWS после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в разделе Настройка конфигурации жизненного цикла в контейнере в документации AWS.
Настройка учетной записи Хранилище BLOB-объектов Azure
В Azure создайте учетную запись хранения и запишите строка подключения. Дополнительные сведения см. в разделе "Управление ключами доступа к учетной записи хранения" в Документация Майкрософт.
Примечание.
GitHub Enterprise Importer не удаляет архив из Хранилище BLOB-объектов Azure после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в статье "Оптимизация затрат путем автоматического управления жизненным циклом данных в Документация Майкрософт".
Настройка хранения blob в Консоль управленияэкземпляр GitHub Enterprise Server
После настройки контейнера хранилища AWS S3 или учетной записи хранения Хранилище BLOB-объектов Azure настройте хранилище BLOB-объектов в Консоль управления экземпляр GitHub Enterprise Server. Дополнительные сведения о Консоль управлениясм. в статье администрирование экземпляра из консоли управления.
-
В учетной записи администратора GitHub Enterprise Server, в правом верхнем углу любой страницы щелкните .
-
Если вы еще не на странице "Администратор сайта" в левом верхнем углу щелкните "Администратор сайта". 1. На боковой панели " "Администратор сайта" щелкните Консоль управления.
-
Войдите в Консоль управления.
-
В верхней панели навигации** щелкните **"Параметры".
-
В разделе "Миграции" нажмите кнопку "Включить" GitHub Миграции.
-
При необходимости для импорта параметров хранилища, настроенных для GitHub Actions, выберите "Копировать параметры хранилища" из действий. Дополнительные сведения см. в статье "Включение действий GitHub с хранилищем BLOB-объектов Azure" и включение GitHub Actions с помощью хранилища Amazon S3.
Примечание.
После копирования параметров хранилища может потребоваться обновить конфигурацию облачной учетной записи хранения, чтобы работать с GitHub Enterprise Importer. В частности, необходимо убедиться, что разрешены IP-адреса GitHub. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами GitHub.
-
Если параметры хранилища не импортируются из GitHub Actions, выберите Хранилище BLOB-объектов Azure или Amazon S3 и заполните необходимые сведения.
Примечание.
Если вы используете Amazon S3, необходимо задать URL-адрес службы AWS для стандартной конечной точки региона AWS, в котором находится контейнер. Например, если контейнер находится в регионе
eu-west-1, будет указанhttps://s3.eu-west-1.amazonaws.comURL-адрес службы AWS. Сеть экземпляра GitHub Enterprise Server должна разрешить доступ к этому узлу. Конечные точки шлюза не поддерживаются, напримерbucket.vpce-0e25b8cdd720f900e-argc85vg.s3.eu-west-1.vpce.amazonaws.com. Дополнительные сведения о конечных точках шлюза см. в разделе "Конечные точки шлюза" для Amazon S3 в документации AWS. -
Щелкните " Тестировать параметры хранилища".
-
Нажмите кнопку Сохранить параметры.
Разрешение сетевого доступа
Если вы настроили правила брандмауэра в учетной записи хранения, убедитесь, что у вас есть доступ к диапазонам IP-адресов для назначения миграции. См . раздел AUTOTITLE.
Шаг 4: Настройте исходник миграции в GitHub Enterprise Cloud
Вы можете настроить источник миграции с помощью createMigrationSource запроса. Вам потребуется указать ownerIdидентификатор организации, собранный GetOrgInfo из запроса.
Ваш источник миграции — это ваша организация на GitHub Enterprise Server.
createMigrationSource мутация
mutation createMigrationSource($name: String!, $url: String!, $ownerId: ID!) {
createMigrationSource(input: {name: $name, url: $url, ownerId: $ownerId, type: GITHUB_ARCHIVE}) {
migrationSource {
id
name
url
type
}
}
}
Примечание.
Обязательно используйте GITHUB_ARCHIVE для type.
| Переменная запроса | Description |
|---|---|
name | Имя источника миграции. Это имя для собственной ссылки, поэтому можно использовать любую строку. |
ownerId | Идентификатор организации в GitHub Enterprise Cloud. |
|
url | URL для экземпляр GitHub Enterprise Server. Этот URL не обязательно должен быть доступен из GitHub Enterprise Cloud.
createMigrationSource ответ
{
"data": {
"createMigrationSource": {
"migrationSource": {
"id": "MS_kgDaACRjZTY5NGQ1OC1mNDkyLTQ2NjgtOGE1NS00MGUxYTdlZmQwNWQ",
"name": "GHES Source",
"url": "https://my-ghes-hostname.com",
"type": "GITHUB_ARCHIVE"
}
}
}
}
В этом примере MS_kgDaACRjZTY5NGQ1OC1mNDkyLTQ2NjgtOGE1NS00MGUxYTdlZmQwNWQ — это идентификатор источника миграции, который мы будем использовать на следующем шаге.
Шаг 5: Сгенерировать архивы миграции на экземпляр GitHub Enterprise Server
Вы используете REST API для запуска двух «миграций» GitHub Enterprise Server: одна — для создания архива исходного файла Git вашего репозитория, другая — для создания архива метаданных вашего репозитория (например, проблем и pull requests).
Чтобы сгенерировать архив исходного кода Git, сделайте POST запрос к https://HOSTNAME/api/v3/orgs/ORGANIZATION/migrations, заменяя HOSTNAME на имя хоста экземпляр GitHub Enterprise Server, а ORGANIZATION также на логин вашей организации.
В тексте укажите один репозиторий, который требуется перенести. Запрос будет выглядеть примерно так:
POST /api/v3/orgs/acme-corp/migrations HTTP/1.1
Accept: application/vnd.github+json
Authorization: Bearer <TOKEN>
Content-Type: application/json
Host: github.acmecorp.net
{
"repositories": ["repository_to_migrate"],
"exclude_metadata": true
}
Чтобы создать архив метаданных, отправьте аналогичный запрос на тот же URL-адрес со следующим текстом:
{
"repositories": ["repository_to_migrate"],
"exclude_git_data": true,
"exclude_releases": false,
"exclude_owner_projects": true
}
Каждый из этих двух вызовов API возвращает ответ JSON, включая идентификатор запущенной миграции.
HTTP/1.1 201 Created
{
"id": 123,
// ...
}
Дополнительные сведения см. в разделе "Запуск миграции организации".
Создание архивов может занять некоторое время в зависимости от объема данных. Вы можете регулярно проверять состояние двух миграций с помощью API "Получить состояние миграции организации" до тех пор, пока state миграция не изменится exported.
GET /api/v3/orgs/acme-corp/migrations/123 HTTP/1.1
Accept: application/vnd.github+json
Authorization: Bearer <TOKEN>
Host: github.acmecorp.net
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 123,
"state": "exported",
// ...
}
Дополнительные сведения см. в разделе "Получение состояния миграции организации".
Примечание.
Если миграция перемещается в failed состояние, а не exported состояние, попробуйте снова начать миграцию. Если миграция завершается сбоем, рекомендуется создать архивы, используя ghe-migrator вместо API.
Выполните действия, описанные в разделе "Экспорт данных миграции из предприятия", добавив в миграцию только один репозиторий. В конце процесса у вас будет один архив миграции с источником и метаданными Git, и вы можете перейти к шагу 6 в этой статье.
state После перехода exportedна миграцию можно получить URL-адрес миграции с помощью API загрузки архива миграции организации.
GET /api/v3/orgs/acme-corp/migrations/123/archive HTTP/1.1
Accept: application/vnd.github+json
Authorization: Bearer <TOKEN>
Host: github.acmecorp.net
HTTP/1.1 302 Found
Location: https://media.github.acmecorp.net/migrations/123/archive/cca2ebe9-7403-4ffa-9b6a-4c9e16c94410?token=AAAAABEWE7JP4H2HACKEGMTDOYRC6
API вернет 302 Found ответ с заголовком Location , перенаправляющимся на URL-адрес, в котором находится скачиваемый архив. Скачайте два файла: один для источника Git и один для метаданных.
Дополнительные сведения см. в разделе "Скачивание архива миграции организации".
После завершения обоих миграций и скачивания архивов можно перейти к следующему шагу.
Шаг 6. Отправка архивов миграции
Чтобы импортировать данные в GitHub Enterprise Cloud, вы должны передать оба архива для каждого репозитория (исходный код Git и метаданные) с вашей машины в GitHub, используя наш API GraphQL.
Если вы используете GitHub Enterprise Server версию 3.7 или ниже, сначала нужно сгенерировать URL-адреса архивов, доступных через GitHub. Большинство клиентов предпочитают отправлять архивы в службу хранилища BLOB-объектов поставщика облачных служб, например Amazon S3 или Хранилище BLOB-объектов Azure, а затем создать короткий URL-адрес для каждого.
Если вы используете GitHub Enterprise Server версию 3.8 или выше, ваш экземпляр загружает архивы и генерирует URL-адреса. Заголовок Location на предыдущем шаге возвращает короткий URL-адрес.
Возможно, вам нужно добавить IP-диапазоны разрешительных GitHubсписков. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами GitHub.
Загрузка ваших архивов миграции в GitHub-owned blob storage
Если вы используете GitHub-owned blob storage, вы загрузите свой архив GitHub-owned blob storage следующим образом:
- Создание многопартийной отправки путем отправки запроса POST
- Отправка архива в нескольких частях размером до 100 МБ в виде запросов PATCH
- Отправка запроса PUT для завершения отправки
1. Создание многопартийной отправки
Вы отправите запрос POST на следующие действия:
https://uploads.github.com/organizations/{organization_id}/gei/archive/blobs/uploads
Включите текст JSON, как показано ниже, с именем и размером архива. Тип контента может оставаться как "application/octet-stream" для всех отправлений.
{
"content_type": "application/octet-stream",
"name": "git-archive.tar.gz",
"size": 262144000
}
При этом возвращается ответ объекта JSON следующим образом:
{
"guid": "363b2659-b8a3-4878-bfff-eed4bcb54d35",
"node_id": "MA_kgDaACQzNjNiMjY1OS1iOGEzLTQ4NzgtYmZmZi1lZWQ0YmNiNTRkMzU",
"name": "git-archive.tar.gz",
"size": 33287,
"uri": "gei://archive/363b2659-b8a3-4878-bfff-eed4bcb54d35",
"created_at": "2024-11-13T12:35:45.761-08:00"
}
Этот универсальный код ресурса (URI) представляет загруженный архив и будет использоваться для запроса миграции при запуске миграции репозитория. Ответ также будет содержать расположение в заголовке ответа, используемом для отправки частей файлов с помощью запроса PATCH на следующем шаге:
/organizations/{organization_id}/gei/archive/blobs/uploads?part_number=1&guid=<guid>&upload_id=<upload_id>
2. Отправка архива в нескольких частях
Отправьте до 100 МБ файла в каждой части с запросом PATCH с помощью расположения из предыдущего заголовка ответа, обеспечивая отправку необработанных данных в тексте запроса без использования многопартийной формы. Если последняя часть файла меньше 100 МБ, отправьте только оставшиеся байты в этом последнем запросе:
https://uploads.github.com/{location}
При этом будет возвращен пустой текст ответа со следующим расположением в заголовке ответа:
/organizations/{organization_id}/gei/archive/blobs/uploads?part_number=2&guid=<guid>&upload_id=<upload_id>
Повторите эту процедуру до завершения отправки. Убедитесь, что вы зачитываете до 100 МБ файла за раз и отправляете запросы в новые значения расположения с добавочными part_number значениями.
3. Завершение отправки
Отправьте запрос PUT в значение "последний путь" из предыдущего шага с пустым текстом и отправка в хранилище GitHub завершена. URI GEI можно создать с помощью GUID из этого первоначального запроса POST в следующем формате:
gei://archive/{guid}
Шаг 7. Запуск миграции репозитория
При запуске миграции один репозиторий и его сопутствующие данные переносятся в новый репозиторий GitHub, который вы определяете.
Если вы хотите одновременно переместить несколько репозиториев из одной исходной организации, можно ставить в очередь несколько миграций. Одновременно можно выполнять до 5 миграций репозитория.
startRepositoryMigration мутация
mutation startRepositoryMigration (
$sourceId: ID!,
$ownerId: ID!,
$repositoryName: String!,
$continueOnError: Boolean!,
$accessToken: String!,
$githubPat: String!,
$gitArchiveUrl: String!,
$metadataArchiveUrl: String!,
$sourceRepositoryUrl: URI!,
$targetRepoVisibility: String!
){
startRepositoryMigration( input: {
sourceId: $sourceId,
ownerId: $ownerId,
repositoryName: $repositoryName,
continueOnError: $continueOnError,
accessToken: $accessToken,
githubPat: $githubPat,
targetRepoVisibility: $targetRepoVisibility
gitArchiveUrl: $gitArchiveUrl,
metadataArchiveUrl: $metadataArchiveUrl,
sourceRepositoryUrl: $sourceRepositoryUrl,
}) {
repositoryMigration {
id
migrationSource {
id
name
type
}
sourceUrl
}
}
}
| Переменная запроса | Description |
|---|---|
sourceId | Источник миграции id вернулся из мутации create . |
ownerId | Идентификатор организации в GitHub Enterprise Cloud. |
repositoryName | Пользовательское уникальное имя репозитория, которое в настоящее время не используется ни одной из репозиториев, принадлежащих организации, на GitHub Enterprise Cloud. Проблема с ведением журнала ошибок будет создана в этом репозитории при завершении или остановке миграции. |
continueOnError | Параметр миграции, позволяющий продолжить миграцию при возникновении ошибок, которые не вызывают сбой миграции. Должно быть true или false. Настоятельно рекомендуется задать значение continueOnError true , чтобы миграция продолжалась, если только Importer не может переместить источник Git или Importer потерял соединение и не сможет повторно подключиться к миграции. |
githubPat | personal access token для целевой организации на GitHub Enterprise Cloud. |
accessToken | personal access token для источника. |
target | Видимость нового репозитория. Должно быть private, public или internal. Если этот параметр не задан, репозиторий переносится как закрытый. |
gitArchiveUrl | -доступный URL для вашего архива исходного кода GitHub Enterprise CloudGit.
metadataArchiveUrl | -доступный URL для вашего архива GitHub Enterprise Cloudметаданных.
sourceRepositoryUrl | URL вашего репозитория в вашем GitHub Enterprise Server инстансе. Это обязательно, но GitHub Enterprise Cloud не будет напрямую общаться с вашим GitHub Enterprise Server экземпляром.
Для personal access token требований см. Управление доступом к миграции между продуктами GitHub.
На следующем шаге вы будете использовать идентификатор миграции, возвращенный из startRepositoryMigration изменения, чтобы проверить состояние миграции.
Шаг 8. Проверка состояния миграции
Чтобы обнаружить любые сбои миграции и убедиться, что миграция работает, можно проверить состояние миграции с помощью getMigration запроса. Вы также можете проверить состояние нескольких миграций.getMigrations
Запрос getMigration возвращается с состоянием, чтобы сообщить, является queuedли миграция , in progress``failedили completed. Если миграция завершилась сбоем, Importer предоставит причину сбоя.
getMigration запрос
query (
$id: ID!
){
node( id: $id ) {
... on Migration {
id
sourceUrl
migrationSource {
name
}
state
failureReason
}
}
}
| Переменная запроса | Description |
|---|---|
id | Миграцияid, возвращаемая мутациейstart. |
Шаг 9. Проверка миграции и проверка журнала ошибок
Чтобы завершить миграцию, рекомендуется проверить проблему журнала миграции. Эта проблема создается на GitHub в целевом репозитории.

Наконец, рекомендуется просмотреть перенесенные репозитории для проверки звука.
Шаг 1: Установите GEI extension of the GitHub CLI
Если это первая миграция, необходимо установить GEI extension of the GitHub CLI. Дополнительные сведения о GitHub CLIсм. в разделе О GitHub CLI.
Кроме того, можно скачать автономный двоичный файл на странице выпусков для github/gh-gei репозитория. Двоичный файл можно запускать напрямую без gh префикса.
-
Установите GitHub CLI. Инструкции по установке для GitHub CLI см. в репозитории GitHub CLI.
Примечание.
Вам нужна версия 2.4.0 или более позднюю версию GitHub CLI. Вы можете проверить версию, установленную
gh --versionс помощью команды. -
Установите GEI extension.
Shell gh extension install github/gh-gei
gh extension install github/gh-gei
В любое время, когда вам нужна помощь с GEI extension, можно использовать --help флаг с помощью команды. Например, gh gei --help перечислит все доступные команды и gh gei migrate-repo --help отобразит список всех параметров, доступных для migrate-repo команды.
Шаг 2: Обновите GEI extension of the GitHub CLI
Данные GEI extension обновляются еженедельно. Чтобы убедиться, что вы используете последнюю версию, обновите расширение.
gh extension upgrade github/gh-gei
Шаг 3. Задание переменных среды
Прежде чем использовать GEI extension для миграции на GitHub Enterprise Cloud, необходимо создать personal access tokens, которые могут получить доступ к исходным и целевым организациям, а затем задать personal access tokens в качестве переменных среды.
-
Создайте и запишите personal access token (classic), которая будет проходить проверку подлинности для целевой организации на GitHub Enterprise Cloud, убедившись, что маркер соответствует всем требованиям. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами GitHub.
-
Создайте и запишите personal access token, которая будет проходить проверку подлинности для исходной организации, убедившись, что этот маркер также соответствует всем одинаковым требованиям.
-
Задайте переменные среды для personal access tokens, заменив TOKEN в командах ниже personal access token, записанных выше. Используется
GH_PATдля целевой организации иGH_SOURCE_PATдля исходной организации.-
Если вы используете терминал, используйте
exportкоманду.Shell export GH_PAT="TOKEN" export GH_SOURCE_PAT="TOKEN"
export GH_PAT="TOKEN" export GH_SOURCE_PAT="TOKEN" -
Если вы используете PowerShell, используйте
$envкоманду.Shell $env:GH_PAT="TOKEN" $env:GH_SOURCE_PAT="TOKEN"
$env:GH_PAT="TOKEN" $env:GH_SOURCE_PAT="TOKEN"
-
-
Если вы переходите на GitHub Enterprise Cloud с размещением данных, для удобства, установите переменную среды для базового URL API для вашего предприятия.
Убедитесь, что вы заменили
SUBDOMAINего на поддомен вашего предприятия. Например, если поддоменом вашего предприятия являетсяacme, значениемTARGET_API_URLбудет .https://api.acme.ghe.com-
Если вы используете терминал, используйте
exportкоманду.Shell export TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
export TARGET_API_URL="https://api.SUBDOMAIN.ghe.com" -
Если вы используете PowerShell, используйте
$envкоманду.Shell $env:TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
$env:TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
Вы используете эту переменную с
--target-api-urlопцией в командах, которые выполняете с GitHub CLI. -
Шаг 4. Настройка хранилища BLOB-объектов
Миграция репозиториев с GitHub-owned blob storage
Если вы не хотите настраивать и предоставлять GitHub Enterprise Importer доступ к клиентскому аккаунту blob-хранилища для хранения архивов репозитория, вы можете мигрировать репозитории с GitHub-owned blob storageпомощью . Для этого вы должны запускать версию 1.9.0 (или выше) от GEI extension of the GitHub CLI. GitHub-owned blob storage не требует дополнительной настройки и доступен как опция при запуске GEI extension of the GitHub CLI команд.
Для соображений безопасности GitHub-owned blob storage это явно только для записи, и загрузка невозможна GitHub-owned blob storage . После завершения миграции архивы репозитория немедленно удаляются. Если архив отправляется и не используется в миграции, архив удаляется через 7 дней.
Когда вы используете флаг CLI для GitHub-owned blob storage, архив репозитория автоматически экспортируется в адрес, настроенный в Консоли управления, загружается в хранилище, принадлежащее GitHub, и импортируется в адрес вашей миграции. При использовании GitHub-owned blob storage мы рекомендуем настроить локальное хранилище. Ознакомьтесь с использованием локального хранилища (GHES 3.16+).
Перенос репозиториев с хранилищем BLOB-объектов, принадлежащих клиенту
Необходимо хранить данные репозитория в том месте, к которому могут получить доступ GitHub. Если экземпляр GitHub Enterprise Server находится за брандмауэром, может потребоваться настроить хранилище BLOB-объектов с помощью внешней облачной службы.
Сначала необходимо настроить хранилище BLOB-объектов с помощью поддерживаемого поставщика. Затем, если вы используете поставщика облачных служб, необходимо настроить учетные данные для поставщика хранилища в Консоль управления или GitHub CLI.
GitHub CLI поддерживает следующие поставщики хранилища BLOB-объектов:
-
Amazon Web Services (AWS) S3
-
хранилище BLOB-объектов Azure
-
Локальное хранилище в экземпляре GHES (GHES 3.16 и более поздних версий). Мы рекомендуем использовать этот параметр с GitHub-owned blob storage.
Настройка контейнера хранилища AWS S3
В AWS настройте контейнер S3. Дополнительные сведения см. в разделе "Создание контейнера " в документации ПО AWS.
Вам также потребуется ключ доступа AWS и секретный ключ со следующими разрешениями:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucketMultipartUploads",
"s3:AbortMultipartUpload",
"s3:ListBucket",
"s3:DeleteObject",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::github-migration-bucket",
"arn:aws:s3:::github-migration-bucket/*"
]
}
]
}
Примечание.
GitHub Enterprise Importer не удаляет архив из AWS после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в разделе Настройка конфигурации жизненного цикла в контейнере в документации AWS.
Настройка учетной записи хранения Хранилище BLOB-объектов Azure
В Azure создайте учетную запись хранения и запишите строка подключения. Дополнительные сведения см. в разделе "Управление ключами доступа к учетной записи хранения" в Документация Майкрософт.
Примечание.
GitHub Enterprise Importer не удаляет архив из Хранилище BLOB-объектов Azure после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в статье "Оптимизация затрат путем автоматического управления жизненным циклом данных в Документация Майкрософт".
Использование локального хранилища (GHES 3.16+)
При выполнении миграции с локальным хранилищем архивные данные записываются на диск на экземпляр GitHub Enterprise Server, не требуя поставщика облачного хранилища.
- Если у вас нет правил брандмауэра, блокирующих исходящий трафик из GitHub Enterprise Server, GitHub Enterprise Importer может автоматически получить сохраненный архив из GitHub Enterprise Server.
- Если у вас есть правила брандмауэра и нет необходимости разрешать доступ к GitHub Enterprise Importer, вы можете передать архивные данные в GitHub-owned blob storage для доступа к GitHub Enterprise Importer. Чтобы сделать это вручную, см. статью "Отправка архивов миграции в хранилище BLOB-объектов, принадлежащих GitHub" в версии API этой статьи.
- В учетной записи администратора GitHub Enterprise Server, в правом верхнем углу любой страницы щелкните .
- На боковой панели " "Администратор сайта" щелкните Консоль управления.
- Войдите в Консоль управления.
- На левой боковой панели щелкните "Миграции".
- Нажмите кнопку "Включить" GitHub Миграции.
- В разделе "Хранилище миграций" щелкните "Локальное хранилище".
- Нажмите кнопку Сохранить параметры.
При выполнении миграции отслеживайте место на диске на GitHub Enterprise Server. Архивы миграции автоматически удаляются через 7 дней. Чтобы освободить место, можно удалить архив с помощью Конечные точки REST API для миграции организации.
Настройка учетных данных хранилища BLOB-объектов
Если вы настроили blob-хранилище с облачным провайдером (в отличие от локального хранилища), необходимо настроить учетные данные для провайдера хранения в следующих GitHubформатах:
- Если вы используете GitHub Enterprise Server версию 3.8 или выше, настройте учетные данные в Консоль управления.
- Если вы используете GitHub Enterprise Server версию 3.7 или ниже, настройте учетные данные в GitHub CLI.
Настройка хранения blob в Консоль управленияэкземпляр GitHub Enterprise Server
Примечание.
Настройка blob storage нужно Консоль управления только если вы используете GitHub Enterprise Server версию 3.8 или выше. Если вы используете версию 3.7 или ниже, настройте учетные данные в этом GitHub CLI варианте.
После настройки контейнера хранилища AWS S3 или учетной записи хранения Хранилище BLOB-объектов Azure настройте хранилище BLOB-объектов в Консоль управления экземпляр GitHub Enterprise Server. Дополнительные сведения о Консоль управлениясм. в статье администрирование экземпляра из консоли управления.
-
В учетной записи администратора GitHub Enterprise Server, в правом верхнем углу любой страницы щелкните .
-
Если вы еще не на странице "Администратор сайта" в левом верхнем углу щелкните "Администратор сайта". 1. На боковой панели " "Администратор сайта" щелкните Консоль управления.
-
Войдите в Консоль управления.
-
В верхней панели навигации** щелкните **"Параметры".
-
В разделе "Миграции" нажмите кнопку "Включить" GitHub Миграции.
-
При необходимости для импорта параметров хранилища, настроенных для GitHub Actions, выберите "Копировать параметры хранилища" из действий. Дополнительные сведения см. в статье "Включение действий GitHub с хранилищем BLOB-объектов Azure" и включение GitHub Actions с помощью хранилища Amazon S3.
Примечание.
После копирования параметров хранилища может потребоваться обновить конфигурацию облачной учетной записи хранения, чтобы работать с GitHub Enterprise Importer. В частности, необходимо убедиться, что разрешены IP-адреса GitHub. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами GitHub.
-
Если параметры хранилища не импортируются из GitHub Actions, выберите Хранилище BLOB-объектов Azure или Amazon S3 и заполните необходимые сведения.
Примечание.
Если вы используете Amazon S3, необходимо задать URL-адрес службы AWS для стандартной конечной точки региона AWS, в котором находится контейнер. Например, если контейнер находится в регионе
eu-west-1, будет указанhttps://s3.eu-west-1.amazonaws.comURL-адрес службы AWS. Сеть экземпляра GitHub Enterprise Server должна разрешить доступ к этому узлу. Конечные точки шлюза не поддерживаются, напримерbucket.vpce-0e25b8cdd720f900e-argc85vg.s3.eu-west-1.vpce.amazonaws.com. Дополнительные сведения о конечных точках шлюза см. в разделе "Конечные точки шлюза" для Amazon S3 в документации AWS. -
Щелкните " Тестировать параметры хранилища".
-
Нажмите кнопку Сохранить параметры.
Настройка данных хранения blob в GitHub CLI
Примечание.
Настройка данных для хранения GitHub CLI blob нужно только если вы используете GitHub Enterprise Server версию 3.7 или ниже. Если вы используете версию 3.8 или выше, настройте blob storage в этом Консоль управления файле.
Если настроить учетные данные для хранения blob в GitHub CLI, вы не сможете выполнять миграции, если исходник или метаданные превышают 2 ГБ. Для выполнения этих миграций обновитесь до GitHub Enterprise Server версии 3.8 или выше.
Конфигурирование учетных данных AWS S3 в GitHub CLI
Когда вы будете готовы к миграции, вам потребуется предоставить учетные данные AWS в GitHub CLI: регион, ключ доступа, секретный ключ и маркер сеанса (при необходимости). Их можно передать в качестве аргументов или задать переменные среды, называемые AWS_REGION, и AWS_SESSION_TOKEN``AWS_ACCESS_KEY_ID``AWS_SECRET_ACCESS_KEY.
Кроме того, необходимо передать имя контейнера S3 с помощью аргумента --aws-bucket-name .
Configuring Хранилище BLOB-объектов Azure account credentials in theGitHub CLI
Когда вы будете готовы выполнить миграцию, вы можете передать строка подключения в GitHub CLI в качестве аргумента или передать его с помощью переменной AZURE_STORAGE_CONNECTION_STRINGсреды.
Разрешение сетевого доступа
Если вы настроили правила брандмауэра в учетной записи хранения, убедитесь, что у вас есть доступ к диапазонам IP-адресов для назначения миграции. См . раздел AUTOTITLE.
Шаг 5. Создание скрипта миграции
Если вы хотите перенести несколько репозиториев в GitHub Enterprise Cloud одновременно, используйте GitHub CLI для создания скрипта миграции. Результирующий скрипт будет содержать список команд миграции, по одному на репозиторий.
Примечание.
Создание скрипта выводит скрипт PowerShell. Если вы используете терминал, вам потребуется вывести сценарий с .ps1 расширением файла и установить PowerShell для Mac[ или Linux, ](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.2)чтобы запустить его.
Если вы хотите перенести один репозиторий, перейдите к следующему шагу.
Создание скрипта миграции
Этот шаг необходимо выполнить с компьютера, который может получить доступ к API для экземпляр GitHub Enterprise Server. Если вы можете получить доступ к экземпляру из браузера, компьютер имеет правильный доступ.
Чтобы создать скрипт миграции, выполните gh gei generate-script команду.
Для GitHub Enterprise Server версии 3.8 или выше, или если вы используете 3.7 или ниже с Хранилище BLOB-объектов Azure, используйте следующие флаги:
gh gei generate-script --github-source-org SOURCE \ --github-target-org DESTINATION \ --output FILENAME \ --ghes-api-url GHES-API-URL
gh gei generate-script --github-source-org SOURCE \
--github-target-org DESTINATION \
--output FILENAME \
--ghes-api-url GHES-API-URL
Если вы используете GitHub Enterprise Server 3.7 или ниже с AWS S3, используйте следующие флаги:
gh gei generate-script --github-source-org SOURCE \ --github-target-org DESTINATION \ --output FILENAME \ --ghes-api-url GHES-API-URL \ --aws-bucket-name AWS-BUCKET-NAME
gh gei generate-script --github-source-org SOURCE \
--github-target-org DESTINATION \
--output FILENAME \
--ghes-api-url GHES-API-URL \
--aws-bucket-name AWS-BUCKET-NAME
Заполнители
Замените заполнители в приведенной выше команде следующими значениями.
| Заполнитель | Значение |
|---|---|
| ИСТОЧНИК | Имя исходной организации |
| НАЗНАЧЕНИЕ | Имя целевой организации |
| FILENAME | Имя файла для результирующего скрипта миграции Если вы используете терминал, используйте .ps1 расширение файла в качестве созданного скрипта, чтобы запустить PowerShell. Вы можете установить PowerShell для Mac или Linux. |
| GHES-API-URL | URL-адрес для API экземпляр GitHub Enterprise Server, например https:/ |
| AWS-BUCKET-NAME | Имя контейнера для контейнера AWS S3 |
Дополнительные аргументы
| Аргумент | Description |
|---|---|
--download-migration-logs | Скачайте журнал миграции для каждого перенесенного репозитория. Дополнительные сведения о журналах миграции см. в разделе Доступ к журналам миграции для GitHub Enterprise Importer. |
--lock-source-repo | Заблокируйте исходный репозиторий при миграции. |
| Предупреждение: Блокировка исходного репозитория предотвращает дальнейшие изменения и может нарушить рабочие процессы. Рекомендуется использовать этот вариант только в том случае, если вы уверены в его целесообразности. Дополнительные сведения см. в разделе Сведения о заблокированных репозиториях. | |
--no-ssl-verify | Если экземпляр GitHub Enterprise Server использует самозаверяющий или недопустимый SSL-сертификат, используйте --no-ssl-verify флаг. При использовании этого флага GitHub CLI пропустит проверку SSL-сертификата только при извлечении данных из экземпляра. Все остальные вызовы будут проверять SSL. |
--skip-releases | Если в репозитории имеется более 10 ГБ данных о выпусках, выпуски не могут быть перенесены. --skip-releases Используйте флаг для переноса репозитория без выпусков. |
--target-api-url TARGET-API-URL | Если вы переносите данные GHE.com, добавьте --target-api-url TARGET-API-URL, где TARGET-API-URL является базовым URL-адресом API для поддомена предприятия. Например: https:/. |
--use-github-storage | Выполните миграцию репозитория, используя GitHub-owned blob storage промежуточное решение для хранения blob. |
Просмотр скрипта миграции
После создания скрипта просмотрите файл и, при необходимости, измените скрипт.
- Если есть какие-либо репозитории, которые вы не хотите перенести, удалить или закомментировать соответствующие строки.
- Если в целевой организации есть другое имя репозиториев, обновите значение соответствующего
--target-repoфлага. - Если вы хотите изменить видимость нового репозитория, обновите значение соответствующего
--target-repo-visibilityфлага. По умолчанию скрипт задает ту же видимость, что и исходный репозиторий.
Если в репозитории имеется более 10 ГБ данных о выпусках, выпуски не могут быть перенесены. --skip-releases Используйте флаг для переноса репозитория без выпусков.
Если вы скачали GEI как автономный двоичный файл, а не как расширение для GitHub CLI, необходимо обновить созданный скрипт, чтобы запустить двоичный файл вместо gh geiнего.
Шаг 6. Миграция репозиториев
Можно перенести несколько репозиториев с помощью скрипта миграции или одного репозитория с gh gei migrate-repo помощью команды.
При миграции репозиториев он GEI extension of the GitHub CLI выполняет следующие шаги:
- Подключается к экземпляр GitHub Enterprise Server и генерирует два архива миграции на каждый репозиторий — один для исходного кода Git, другой для метаданных
- Отправляет архивы миграции в выбранный поставщик хранилища BLOB-объектов.
- Начинает вашу миграцию в GitHub Enterprise Cloud, используя URL архивов, хранящихся у вашего провайдера хранения blob
- Удаляет архив миграции с локального компьютера
Перенос нескольких репозиториев
Если вы переходите с GitHub Enterprise Server версии 3.7 или более ранней версии, перед запуском скрипта необходимо установить дополнительные переменные среды для аутентификации в провайдере хранения blob.
-
Для Хранилище BLOB-объектов Azure задайте
AZURE_STORAGE_CONNECTION_STRINGстрока подключения для учетной записи хранения Azure.Поддерживаются только строка подключения с помощью ключей доступа к учетной записи хранения. Строки подключения, использующие подписанные URL-адреса (SAS), не поддерживаются. Дополнительные сведения о ключах доступа к учетной записи хранения см. в статье "Управление ключами доступа к учетной записи хранения" в документации Azure.
-
Для AWS S3 задайте следующие переменные среды.
AWS_ACCESS_KEY_ID: идентификатор ключа доступа для контейнераAWS_SECRET_ACCESS_KEY: секретный ключ для контейнераAWS_REGION: регион AWS, в котором находится контейнерAWS_SESSION_TOKEN: маркер сеанса, если вы используете временные учетные данные AWS (см. сведения об использовании временных учетных данных с ресурсами AWS в документации AWS).
Чтобы мигрировать несколько репозиториев, запустите сгенерированный вами скрипт. Замените FILENAME в приведенных ниже командах именем файла, указанным при создании скрипта.
-
Если вы используете терминал, используйте
./.Shell ./FILENAME
./FILENAME -
Если вы используете PowerShell, используйте
.\.Shell .\FILENAME
.\FILENAME
Перенос одного репозитория
Этот шаг необходимо выполнить с компьютера, который может получить доступ к API для экземпляр GitHub Enterprise Server. Если вы можете получить доступ к экземпляру из браузера, компьютер имеет правильный доступ.
Чтобы перенести один репозиторий, используйте gh gei migrate-repo команду.
Если вы используете GitHub Enterprise Server версию 3.8 или выше, используйте следующие флаги:
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME --ghes-api-url GHES-API-URL
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME --ghes-api-url GHES-API-URL
Если вы переходите с GitHub Enterprise Server версии 3.7 или более ранней версии и используете Хранилище BLOB-объектов Azure в качестве провайдера хранения blob, используйте следующие флаги для аутентификации:
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \
--ghes-api-url GHES-API-URL --azure-storage-connection-string "AZURE_STORAGE_CONNECTION_STRING"
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \
--ghes-api-url GHES-API-URL --azure-storage-connection-string "AZURE_STORAGE_CONNECTION_STRING"
Если вы переходите с GitHub Enterprise Server версии 3.7 или более ранней и используете Amazon S3 в качестве провайдера хранения blob, используйте следующие флаги для аутентификации:
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \
--ghes-api-url GHES-API-URL --aws-bucket-name "AWS-BUCKET-NAME"
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \
--ghes-api-url GHES-API-URL --aws-bucket-name "AWS-BUCKET-NAME"
Заполнители
Замените заполнители в приведенной выше команде следующими значениями.
| Заполнитель | Значение |
|---|---|
| ИСТОЧНИК | Имя исходной организации |
| CURRENT-NAME | Имя репозитория, который требуется перенести |
| НАЗНАЧЕНИЕ | Имя целевой организации |
| NEW-NAME | Имя, которое должен иметь перенесенный репозиторий. |
| GHES-API-URL | URL-адрес для API экземпляр GitHub Enterprise Server, например https:/ |
| AZURE_STORAGE_CONNECTION_STRING | Строка подключения для учетной записи хранения Azure. Обязательно процитировать строка подключения, содержащий символы, которые, скорее всего, будут интерпретированы оболочкой. |
| AWS-BUCKET-NAME | Имя контейнера для контейнера AWS S3 |
Дополнительные аргументы
| Аргумент | Description |
|---|---|
--lock-source-repo | Заблокируйте исходный репозиторий при миграции. Дополнительные сведения см. в разделе Сведения о заблокированных репозиториях. |
--no-ssl-verify | Если экземпляр GitHub Enterprise Server использует самозаверяющий или недопустимый SSL-сертификат, используйте --no-ssl-verify флаг. При использовании этого флага GitHub CLI пропустит проверку SSL-сертификата только при извлечении данных из экземпляра. Все остальные вызовы будут проверять SSL. |
--skip-releases | Если в репозитории имеется более 10 ГБ данных о выпусках, выпуски не могут быть перенесены. --skip-releases Используйте флаг для переноса репозитория без выпусков. |
--target-api-url TARGET-API-URL | Если вы переносите данные GHE.com, добавьте --target-api-url TARGET-API-URL, где TARGET-API-URL является базовым URL-адресом API для поддомена предприятия. Например: https:/. |
--target-repo-visibility TARGET-VISIBILITY | Репозитории переносятся с частной видимостью по умолчанию. Чтобы задать видимость, можно добавить флаг, указать --target-repo-visibility private``publicили .internal Если вы переносите данные корпоративный с управляемыми пользователями, общедоступные репозитории недоступны. |
--use-github-storage | Выполните миграцию репозитория, используя GitHub-owned blob storage промежуточное решение для хранения blob. |
Прерывание миграции
Если вы хотите отменить миграцию, используйте abort-migration команду, заменив идентификатор MIGRATION-ID возвращенным идентификатором migrate-repo.
gh gei abort-migration --migration-id MIGRATION-ID
gh gei abort-migration --migration-id MIGRATION-ID
Шаг 7. Проверка миграции и проверка журнала ошибок
По завершении миграции рекомендуется просмотреть журнал миграции. Дополнительные сведения см. в разделе Доступ к журналам миграции для GitHub Enterprise Importer. Если в вашем исходном репозитории были правила, и они блокируют вас, смотрите Настройка обхода набора правил для миграций репозиториев.
Рекомендуется просмотреть перенесенные репозитории для проверки звука.
После завершения миграции рекомендуется удалить архивы из контейнера хранилища. Если вы планируете выполнить дополнительные миграции, удалите архив, помещённый в контейнер ADO2GH extensionхранения . Если вы закончите перенос, вы можете удалить весь контейнер.