Prerequisites
- 您必须已完成本指南的所有先前阶段。
- 必须启用 GitLab 项目才能导出。 请参阅 GitLab 文档中有关导入 的项目导出 和 Sidekiq 配置 。
- 确保了解将要迁移的数据以及导入程序已知的支持限制。 有关详细信息,请参阅 了解从 GitLab 迁移到 GitHub。
- 虽然并非必需,但建议在生产迁移期间停止工作。 Importer 不支持增量迁移,因此迁移期间发生的任何更改都不会迁移。 如果选择在生产迁移期间不停止工作,需要手动迁移这些更改。
执行试用运行
为了帮助发现企业可能特有的问题,我们因此强烈建议进行迁移的试运行。 通过试用运行,你将了解:
- 给定存储库的迁移是否可以成功完成。
- 是否可以将迁移的存储库恢复为可行的状态。
- 迁移运行需要多长时间。
试用版运行可以随时进行,在迁移期间无需停止工作。 为了减少完成试迁移所需的时间,可以计划连续安排试运行的批次。 然后,这些存储库的用户可以在自己方便的时候进行结果验证。
-
为试验性迁移创建测试组织。
可以将单个组织用于所有试运行,也可以为每个预期目标组织创建一个测试组织。 请考虑在组织名称的末尾添加
-sandbox,以阐明组织仅用于迁移验证,而不适用于生产。 完成后,可以删除测试组织。 -
运行测试迁移。
-
确认你能够在 后续任务 中完成后续任务。
-
要求用户验证迁移结果。
-
解决试验性迁移发现的任何问题。
-
(可选)删除测试组织。
迁移单个存储库
若要迁移一个存储库,请使用 gh gl2gh migrate-repo 命令。
gh gl2gh migrate-repo \ --gitlab-server-url GITLAB_SERVER_URL \ --gitlab-group SOURCE_GROUP \ --gitlab-project SOURCE_PROJECT \ --github-org DESTINATION \ --github-repo NEW_REPO_NAME \ --use-github-storage
gh gl2gh migrate-repo \
--gitlab-server-url GITLAB_SERVER_URL \
--gitlab-group SOURCE_GROUP \
--gitlab-project SOURCE_PROJECT \
--github-org DESTINATION \
--github-repo NEW_REPO_NAME \
--use-github-storage
将上述命令中的占位符替换为以下值。
| 占位符 | Value |
|---|---|
| GITLAB_SERVER_URL | GitLab 实例的完整 URL,例如 https:/ 或 https:/。 |
| SOURCE_GROUP | 包含项目的组或命名空间的完整路径。 对于嵌套子组,请使用完整路径,例如 parent-group/。 |
| SOURCE_PROJECT | 要迁移的 GitLab 项目。 |
| 目的地 | 目标组织。GitHub |
| NEW_REPO_NAME | 上 GitHub存储库的名称。 |
如果未使用 GitHub-owned blob storage,请参阅 配置 Blob 存储。
其他参数
| Argument | Description |
|---|---|
--target-repo-visibility | 将新存储库的可见性设置为public或 private``internal。 默认值为 private. |
--target-api-url TARGET-API-URL | 如果要迁移到 GHE.com,请添加 --target-api-url TARGET-API-URL,其中 TARGET-API-URL 是企业的子域的基本 API URL。 例如:https:/。 |
--target-uploads-url TARGET-UPLOADS-URL | 如果要迁移到 GHE.com 和使用 GitHub-owned blob storage,请添加 --target-uploads-url TARGET-UPLOADS-URL目标UPLOADS-URL 是企业子域的基本上传 API URL。 例如: https:/。 这默认为 https:/。 |
--no-ssl-verify | 在与 GitLab 实例进行会谈时 GL2GH extension 禁用 SSL 验证。 仅当 GitLab 实例使用自签名证书时,才使用此证书。 所有其他步骤仍验证 SSL。 |
--archive-url URL | 从 URL 导入以前导出的存档,而不是从 GitLab 导出项目。 |
--archive-path PATH | 从本地文件路径导入以前导出的存档,而不是再次从 GitLab 导出项目。 |
--keep-archive | 在本地保留导出存档,而不是在成功上传后将其删除。 |
生成迁移脚本
如果要一次性将多个存储库 GitHub Enterprise Cloud 迁移到其中,请使用 GitHub CLI 该脚本生成迁移脚本。 生成的脚本每个存储库包含一个 migrate-repo 命令。
若要生成迁移脚本,请运行 gh gl2gh generate-script 命令。
gh gl2gh generate-script \ --gitlab-server-url GITLAB_SERVER_URL \ --github-org DESTINATION \ --output FILENAME \ --use-github-storage
gh gl2gh generate-script \
--gitlab-server-url GITLAB_SERVER_URL \
--github-org DESTINATION \
--output FILENAME \
--use-github-storage
将上述命令中的占位符替换为以下值。
| 占位符 | Value |
|---|---|
| GITLAB_SERVER_URL | GitLab 实例的完整 URL,例如 https:/ 或 https:/。 |
| 目的地 | 目标组织。GitHub |
| FILENAME | 生成的迁移脚本的文件名 如果使用终端,请使用 .ps1 文件扩展名,因为生成的脚本需要 PowerShell 才能运行。 可以安装适用于 Mac 或 Linux 的 PowerShell。 |
默认情况下,该脚本包含令牌可以访问的每个项目。 若要限定脚本的范围,请添加 --gitlab-group GROUP或 --gitlab-group GROUP --gitlab-project PROJECT 用于单个项目。
如果未使用 GitHub-owned blob storage,请参阅 配置 Blob 存储。
其他参数
| Argument | Description |
|---|---|
--target-api-url TARGET-API-URL | 如果要迁移到 GHE.com,请添加 --target-api-url TARGET-API-URL,其中 TARGET-API-URL 是企业的子域的基本 API URL。 例如:https:/。 |
--target-uploads-url TARGET-UPLOADS-URL | 如果要迁移到 GHE.com 和使用 GitHub-owned blob storage,请添加 --target-uploads-url TARGET-UPLOADS-URL目标UPLOADS-URL 是企业子域的基本上传 API URL。 例如: https:/。 这默认为 https:/。 |
查看迁移脚本
生成脚本后,查看文件,并根据需要编辑脚本。
- 如果有任何不想迁移的存储库,请删除或注释掉相应的行。
- 如果希望任何存储库在目标组织中具有不同的名称,请更新相应
--github-repo标志的值。 - 如果要更改新存储库的可见性,请添加或更新相应的
--target-repo-visibility标志。
迁移存储库
如果试用运行成功,并且能够完成后续任务,则可以继续执行实际迁移。
警告
建议停止正在迁移的存储库中的工作。 迁移期间或之后所做的任何更改都需要手动迁移。
运行生成的脚本。 将以下命令中的 FILENAME 替换为生成脚本时提供的文件名。
-
如果使用终端,请使用
./。Shell ./FILENAME
./FILENAME -
如果使用 PowerShell,请使用
.\。Shell .\FILENAME
.\FILENAME