准备 GitHub 上的源组织
-
确保您对源组织的存储库具有所有者权限。
-
在 GitHub.com 上生成一个具有
repo
和admin:org
范围的访问令牌。 -
为了最大程度地减少停机时间,请列出您要从源实例中导出的存储库。您可以使用一个文本文件一次将多个存储库添加到导出中,该文件在单独的行中列出每个存储库的 URL。
导出组织的存储库
注意
迁移后,分支关系将不再保留。
要从 GitHub.com 导出存储库数据,请使用迁移 API。
迁移 API 目前处于预览阶段,这意味着端点和参数将来可能会发生变化。
生成迁移存档
注意
锁定存储库会阻止对存储库的所有写入访问权限。您无法将新的团队或协作者与已锁定的存储库关联。
如果您正在执行试运行,则无需锁定存储库。当您从正在使用的存储库迁移数据时,GitHub 强烈建议锁定存储库。有关更多信息,请参阅“关于 ghe-migrator”。
-
通知您的组织成员您将执行迁移。导出可能需要几分钟,具体取决于导出的存储库数量。包括导入在内的完整迁移可能需要几个小时,因此我们建议您进行试运行以确定完整过程需要多长时间。有关更多信息,请参阅“关于 ghe-migrator”。
-
通过向迁移端点发送
POST
请求来启动迁移。您需要-
用于身份验证的访问令牌。
-
要迁移的存储库列表
curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \ -X POST \ -H "Accept: application/vnd.github+json" \ -d'{"lock_repositories":true,"repositories":["ORG_NAME/REPO_NAME", "ORG_NAME/REPO_NAME"]}' \ https://api.github.com/orgs/ORG_NAME/migrations
-
如果要在迁移存储库之前锁定它们,请确保将
lock_repositories
设置为true
。强烈建议这样做。 -
您可以通过将
exclude_attachments: true
传递到端点来排除文件附件。文件附件可能很大,并且可能会不必要地增加最终迁移存档的大小。最终存档大小必须小于 20 GB。
此请求返回一个唯一的
id
,它表示您的迁移。后续调用迁移 API 时需要它。 -
-
发送一个
GET
请求到迁移状态端点以获取迁移的状态。您需要-
用于身份验证的访问令牌。
-
迁移的唯一
id
curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \ -H "Accept: application/vnd.github+json" \ https://api.github.com/orgs/ORG_NAME/migrations/ID
迁移可以处于以下状态之一
pending
,表示迁移尚未开始。exporting
,表示迁移正在进行中。exported
,表示迁移已成功完成。failed
,表示迁移失败。
-
-
迁移导出完成后,通过向迁移下载端点发送
GET
请求下载迁移归档文件。您需要-
用于身份验证的访问令牌。
-
迁移的唯一
id
curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \ -H "Accept: application/vnd.github+json" \ -L -o migration_archive.tar.gz \ https://api.github.com/orgs/ORG_NAME/migrations/ID/archive
-
-
迁移归档文件会在七天后自动删除。如果您希望更早删除,可以向迁移归档文件删除端点发送
DELETE
请求。您需要-
用于身份验证的访问令牌。
-
迁移的唯一
id
curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \ -X DELETE \ -H "Accept: application/vnd.github+json" \ https://api.github.com/orgs/ORG_NAME/migrations/ID/archive
-
-
要准备将归档的迁移数据导入到 GitHub Enterprise Server 实例,请参阅“将数据迁移到 GitHub Enterprise Server”。