Skip to main content
我们经常发布文档更新,此页面的翻译可能仍在进行中。 有关最新信息,请访问英语文档

GitHub Enterprise Importer 的迁移支持

GitHub Enterprise Importer 将各种数据从受支持的源迁移到 GitHub。

注意:GitHub Enterprise Importer 目前为公共 beta 版,可能会有所变化。

关于 GitHub Enterprise Importer 的迁移支持

GitHub Enterprise Importer 可以从任何受支持的迁移源迁移到 GitHub Enterprise Cloud。 每个迁移中包含的数据取决于源。

GitHub Enterprise Importer 支持从以下源迁移到 GitHub Enterprise Cloud。

  • Azure DevOps (ADO) Cloud
  • Bitbucket Server 和 Bitbucket Data Center 5.14 或更高版本
  • GitHub.com
  • GitHub Enterprise Server (GHES) 3.4.1 或更高版本

在 beta 版本期间,Importer 存在适用于所有源的已知限制。

Azure DevOps 迁移支持

如果迁移源是 Azure DevOps,则可以迁移存储库。

只能使用 GitHub Enterprise Importer 从 Azure DevOps Cloud 迁移,而不能从 Azure DevOps Server 迁移。 如果当前使用 Azure DevOps Server,并且想要迁移到 GitHub,可以先迁移到 Azure DevOps Cloud。 有关详细信息,请参阅 Azure 站点上的迁移到 Azure DevOps

目前仅支持将以下存储库数据从 Azure DevOps 迁移到 GitHub Enterprise Cloud。

  • Git 源(包括提交历史记录)
  • 拉取请求
  • 拉取请求的用户历史记录
  • 拉取请求上的工作项链接
  • 拉取请求上的附件
  • 存储库的分支保护(不包括用户范围的分支保护)

如果要将 Azure Pipelines 迁移到 GitHub Actions,请联系 GitHub 帐户管理员。

Bitbucket Server 迁移支持

注意:使用 GitHub Enterprise Importer 从 Bitbucket Server 迁移目前处于专用 beta 版中,可能会发生更改。 若要请求访问 beta 版,请参阅加入 Bitbucket Server 迁移等待列表

仅 Bitbucket Server 或 Bitbucket 数据中心 5.14+ 或更高版本支持从 Bitbucket Server 进行迁移。

如果迁移源是 Bitbucket Server,则可以迁移存储库。 目前仅支持将以下存储库数据从 Bitbucket Server 迁移到 GitHub Enterprise Cloud。

  • Git 源(包括提交历史记录)
  • 拉取请求(包括拉取请求评审、所需审阅者、评论和附件,但不包括文件级评论)

目前,不会迁移以下数据。

  • 拉取请求的文件级评论
  • 分支权限
  • 提交注释
  • 存储库设置

GitHub Enterprise Importer 不会从 Bitbucket Server 迁移 CI 管道。

GitHub.com 迁移支持

如果迁移源为 GitHub.com,则可以迁移单个存储库或整个组织。

迁移组织时,目标企业帐户中会创建一个新组织。 然后,以下数据将迁移到新组织。

  • Teams
  • 存储库
  • 团队对存储库的访问权限
  • 成员特权
  • 组织级 Webhook
  • 在组织中创建的新存储库的默认分支名称

所有存储库都以专用可见性进行迁移。 如果要将存储库的可见性设置为公共或内部,可以在迁移后使用 UI 或 API 进行设置。

团队成员身份不会迁移。 迁移后,需要将成员添加到已迁移的团队。 有关详细信息,请参阅“使用 GitHub Enterprise Importer 在 GitHub 产品之间迁移”。

注意:对团队的引用(例如 @octo-org/octo-team)不会在组织迁移的过程中更新。 这可能会导致目标组织出现问题,例如 CODEOWNERS 文件未按预期工作。 有关如何预防并解决这些问题的详细信息,请参阅“使用 GitHub Enterprise Importer 排查迁移问题”。

直接或在组织迁移过程中迁移存储库时,只会迁移以下数据。

  • Git 源(包括提交历史记录)
  • 拉取请求
  • 问题
  • 里程碑
  • Wiki
  • 存储库级别的项目(经典)
  • GitHub Actions 工作流程
  • 提交注释
  • 活动 Webhook
  • 仓库主题
  • 存储库设置
    • 分支保护(请参阅“分支保护”了解更多详细信息)
    • GitHub Pages 设置
    • 自动链接引用
    • GitHub Advanced Security 设置
    • 拉取请求设置
      • 自动删除头部分支
      • 允许自动合并
      • 允许合并提交(提交消息设置重置为默认消息)
      • 允许 squash 合并(提交消息设置重置为默认消息)
      • 允许变基合并
  • 发布(每个存储库最多 10 GB)
  • 上述数据的用户历史记录

目前,以下数据未迁移。

  • Git LFS 对象和大型二进制文件(仍然支持使用 Git LFS 的存储库,请参阅“GitHub Enterprise Importer 的限制”)
  • GitHub Actions 机密、环境或工作流运行历史记录
  • Webhook 密码
  • GitHub Codespaces 机密
  • Code scanning 结果
  • secret scanning 结果的修正状态
  • Dependabot 警报
  • Dependabot 机密
  • 组织级别的项目(经典)
  • 任何 Projects(新项目体验)
  • 存储库级别的讨论
  • GitHub Packages 中的包
  • GitHub 应用
  • 存储库之间的分支关系(请参阅“关于分叉”)
  • 用户对存储库的访问权限

直接迁移存储库时,团队和团队对存储库的访问权限不会迁移。

分支保护

分支保护将一组指定的规则应用于特定分支名称或分支名称模式。 有关详细信息,请参阅“关于受保护分支”。

始终都会迁移分支保护,但不会迁移某些规则。 以下分支保护规则不会迁移。

  • 允许特定参与者绕过所需的拉取请求
  • 需要审批最近的推送
  • 在合并前要求部署成功
  • 锁定分支
  • 限制创建匹配分支的推送
  • 允许强制推送

还存在下列限制:

  • 如果分支保护规则可以选择性地用于指定不受该规则限制的人员、团队或应用(例如“限制可以关闭拉取请求评审的人员”),则不会迁移这些例外情况。
  • 如果在“指定可以进行强制推送的人员”模式下启用了“允许强制推送”规则,则不会迁移该规则。

GitHub Enterprise Server 迁移支持

如果迁移源为 GitHub Enterprise Server,则可以迁移存储库。

要从 GitHub Enterprise Server (GHES) 迁移,必须有 GHES 3.4.1 或更高版本。

GHES 3.4.1+GHES 3.5.0+
Git 源(包括提交历史记录)XX
拉取请求XX
问题XX
里程碑XX
WikiXX
存储库级别的项目(经典)XX
GitHub Actions 工作流程XX
提交注释XX
活动 WebhookXX
分支保护XX
GitHub Pages 设置XX
上述数据的用户历史记录XX
版本X

根据 GHES 版本,每个存储库适用不同的大小限制。

限制GHES <3.8.0GHES 3.8.0+
Git 源2GB10GB
Metadata2GB10GB

目前,以下数据未迁移。

  • Git LFS 对象和大型二进制文件(仍然支持使用 Git LFS 的存储库,请参阅“GitHub Enterprise Importer 的限制”)
  • GitHub Actions 机密、环境或工作流运行历史记录
  • Webhook 密码
  • GitHub Codespaces 机密
  • Code scanning 结果
  • secret scanning 结果的修正状态
  • Dependabot 警报
  • Dependabot 机密
  • 组织级别的项目(经典)
  • 任何 Projects(新项目体验)
  • 存储库级别的讨论
  • GitHub Packages 中的包
  • GitHub 应用
  • 存储库之间的分支关系(请参阅“关于分叉”)
  • Teams
  • 用户或团队对存储库的访问权限
  • 拉取请求的存储库设置

限制

GitHub Enterprise Importer 可以迁移的内容存在限制。 有些是由于 GitHub.com 的限制,而另一些是由于 GitHub Enterprise Importer 本身的限制。

GitHub.com 的限制

  • 单个 Git 提交的大小限制为 2 GB:Git 存储库中的单个提交不能大于 2 GB。 如果有任何提交大于 2 GB,则需要将其拆分为较小的提交,使每个提交的大小不超过 2 GB。
  • Git 引用的限制为 255 字节:单个 Git 引用(通常称为“ref”)的名称不能大于 255 字节。 通常,这意味着引用的长度不能超过 255 个字符,但任何非 ASCII 字符(如表情符号)都可能占用多个字节。 如果任何 Git 引用太长,将返回明确的错误消息。
  • 文件大小限制为 100 MB:Git 存储库中的单个文件不能大于 100 MB。 请考虑使用 Git LFS 来存储大型文件。 有关详细信息,请参阅“管理大型文件”。

GitHub Enterprise Importer 的限制

  • Git 存储库的大小限制为 10 GB:此限制仅适用于源代码。 要检查存储库的大小,请使用 git-sizer 工具,并检查 Blob 的总大小。
  • 元数据的限制为 10 GB:Importer 无法迁移元数据超过 10 GB 的存储库。 元数据包括问题、拉取请求、发布和附件。 在大多数情况下,大型元数据是由附加到发布的二进制资产引起的。 可以使用 migrate-repo 命令的 --skip-releases 标志从迁移中排除发布,然后在迁移后手动移动发布。
  • Git LFS 对象未迁移:Importer 可以迁移使用 Git LFS 的存储库,但不会迁移 LFS 对象本身。 迁移完成后,可以将其作为后续任务推送到迁移目标。 有关详细信息,请参阅“复制仓库”。
  • 所需后续任务:在 GitHub 产品之间迁移时,某些设置不会迁移,必须在新存储库中重新配置。 有关每次迁移后需要完成的后续任务的列表,请参阅“使用 GitHub Enterprise Importer 在 GitHub 产品之间迁移”。
  • 延迟的代码搜索功能:迁移存储库后,重新编制搜索索引可能需要几个小时,在重新编制索引完成前,代码搜索可能会返回意外的结果。