确定需要迁移的内容量
确定您的时间表,这将在很大程度上决定您的方法。确定时间表的第一步是获取需要迁移的清单。
- 仓库数量
- 拉取请求数量
注意
迁移时间主要取决于仓库中的拉取请求数量。如果您想迁移 1,000 个仓库,并且每个仓库平均有 100 个拉取请求,迁移可能会非常快。如果只迁移 100 个仓库,但每个仓库平均有 75,000 个拉取请求,迁移将需要更长时间并需要更多的规划和测试。
我们建议使用 GitHub CLI 的 ADO2GH 扩展中的 inventory-report 命令。该命令会连接 Azure DevOps API,然后生成多个 CSV 文件。repos.csv 包含有关仓库的信息,包括拉取请求数量。
要生成这些 CSV 文件,请使用以下命令,将 YOUR_ADO_ORG 替换为您在 Azure DevOps 上的组织名称。
gh ado2gh inventory-report --ado-org YOUR_ADO_ORG
gh ado2gh inventory-report --ado-org YOUR_ADO_ORG
在完成需要迁移的仓库清单后,将清单数据与您期望的时间表进行比对。
- 如果贵组织能够承受较高程度的变更,那么您可能能够一次性迁移所有仓库,在几天内完成迁移工作。
- 如果有团队无法同时迁移,您可能需要将迁移分批并错开,以符合各团队的时间表,从而延长迁移周期。
确定 GitHub 组织结构
接下来,规划您将在 GitHub 中创建的组织结构。ADO 和 GitHub 对企业工作组织的方式不同。
- ADO:组织 > 团队项目 > 仓库
- GitHub:Enterprise > organization > repositories
迁移到 GitHub 后,您应该只有一个企业账户和少量该企业拥有的组织。每个来自 ADO 的组织应对应 GitHub 上的单个组织。
注意
在 ADO 中用于将仓库分组的团队项目概念在 GitHub 中不存在。我们不建议为 ADO 的每个团队项目在 GitHub 上创建一个组织,因为这可能导致每个组织内部出现大量未分组的仓库。不过,您可以通过创建团队来管理对一组仓库的访问权限。
如果您希望将迁移工作拆分为批次,新结构可以帮助您确定批次。如果您在 ADO 中拥有多个组织,并且每个组织的仓库规模适合作为批次,考虑按组织进行批量迁移。
- 决定新组织结构的形式。
- 决定是否需要将迁移工作拆分为更小的批次。
- 如果是,请决定如何拆分迁移。
配置仓库权限
由于权限在 GitHub 中的工作方式与 ADO 不同,GitHub Enterprise Importer 不会尝试从 ADO 迁移仓库权限。
当您使用 ADO2GH CLI 时,GitHub Enterprise Importer 将为 ADO 中的每个团队项目在 GitHub 创建两个团队。每个团队被授予对该团队项目所产生的所有仓库的不同访问级别。
| 团队 | 对迁移仓库的访问权限 |
|---|---|
| TEAM-PROJECT-Maintainers | 维护者 |
| TEAM-PROJECT-Admins | 管理员 |
要授予对迁移仓库的访问权限,您可以将人员添加到这些团队中。您可以在 GitHub 上手动完成此操作,或如果在迁移期间选择将团队链接到 Azure Active Directory(AAD)组,则通过在 AAD 中管理组成员资格来实现。有关手动管理团队成员资格的更多信息,请参阅 向团队添加组织成员。