关于从 Bitbucket Server 迁移
可使用 GitHub Enterprise Importer 将存储库从 Bitbucket Server 迁移到 GitHub Enterprise Cloud(GitHub.com 或 GHE.com)。 仅 Bitbucket Server 或 Bitbucket 数据中心 5.14+ 或更高版本支持从 Bitbucket Server 进行迁移。
迁移的数据
目前仅支持将以下存储库数据从 Bitbucket Server 迁移到 GitHub Enterprise Cloud。
-
Git 源(包括提交历史记录)
-
拉取请求(包括注释、拉取请求审查、文件和行级别的拉取请求审查注释、所需的审阅者和附件)
Note
如果已合并拉取请求并且在迁移前在 Bitbucket 服务器上删除了头部分支,则用户在尝试查看拉取请求时可能会收到
500
错误。 Bitbucket 服务器删除对此类拉取请求对象的特定 Git 引用,因此无法迁移与拉取请求关联的那些 Git 对象。
不迁移的数据
目前,不会迁移以下数据。
- 用户拥有的个人存储库
- 分支权限
- 提交注释
- 存储库设置
- CI 管道
迁移数据的限制
GitHub Enterprise Importer 可以迁移的内容存在限制。 有些是由于 GitHub 的限制,而另一些是由于 GitHub Enterprise Importer 本身的限制。
GitHub 的限制
- 单个 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 总大小。 git-sizer 工具还有助于识别与大型文件、blob 大小、提交大小和可能影响迁移的树计数相关的潜在问题。
- 元数据的限制为 10 GB:Importer 无法迁移元数据超过 10 GB 的存储库。 元数据包括问题、拉取请求、发布和附件。 在大多数情况下,大型元数据是由附加到发布的二进制资产引起的。 可以使用
migrate-repo
命令的--skip-releases
标志从迁移中排除发布,然后在迁移后手动移动发布。 - Git LFS 对象未迁移:Importer 可以迁移使用 Git LFS 的存储库,但不会迁移 LFS 对象本身。 迁移完成后,可以将其作为后续任务推送到迁移目标。 有关详细信息,请参阅“复制仓库”。
- 所需后续任务:在 GitHub 产品之间迁移时,某些设置不会迁移,必须在新存储库中重新配置。 有关每次迁移后需要完成的后续任务的列表,请参阅“在 GitHub 产品之间迁移的概述”。
- 延迟的代码搜索功能:迁移存储库后,重新编制搜索索引可能需要几个小时,在重新编制索引完成前,代码搜索可能会返回意外的结果。
- 为组织配置的规则集可能会导致迁移失败:例如,如果配置的规则要求提交作者的电子邮件地址以
@monalisa.cat
结尾,而要迁移的存储库包含不符合此规则的提交,则迁移将失败。 有关规则集的详细信息,请参阅“关于规则集”。 - 模特内容可能不可搜索:模特是与导入内容(如问题、拉取请求、注释等)关联的占位符用户。 搜索与模特关联的内容(如已分配的问题)时,可能找不到问题。 回收模特后,通过新所有者可找到内容。 有关详细信息,请参阅“回收 GitHub Enterprise Importer 的模型”。
入门
从 Bitbucket Server 迁移之前,应规划出如何开展迁移。 迁移数据之前,需要选择开展迁移的人。 必须向该人员授予迁移源和迁移目的地的所需访问权限。 我们还建议先开展测试迁移。
有关完整迁移过程的概述,请参阅“从 Bitbucket Server 迁移到 GitHub Enterprise Cloud 的概述”。