关于使用 GitHub Enterprise Importer
进行存储库迁移
迁移到 GitHub Enterprise Cloud 包括 GitHub.com 上的帐户之间的迁移,如果要采用 数据驻留,则包括迁移到企业的子域 GHE.com。
可以使用 GitHub CLI 或 API 运行迁移。
GitHub CLI 可简化迁移过程,建议大多数客户使用。 具有大量自定义需求的高级客户可以使用 API 构建自己的与 GitHub Enterprise Importer 的集成。
先决条件
- 强烈建议执行迁移的试运行,然后在不久之后完成生产迁移。 若要了解试运行的详细信息,请参阅“在 GitHub 产品之间迁移的概述”。
- 确保了解将要迁移的数据以及导入程序已知的支持限制。 有关详细信息,请参阅“关于 GitHub 产品之间的迁移”。
- 虽然并非必需,但建议在生产迁移期间停止工作。 Importer 不支持增量迁移,因此迁移期间发生的任何更改都不会迁移。 如果选择在生产迁移期间不停止工作,需要手动迁移这些更改。
- 在源组织和目标组织中,你必须是组织所有者或被授予迁移者角色。 有关详细信息,请参阅“管理 GitHub 产品之间迁移的访问权限”。
步骤 1:安装 GEI extension of the GitHub CLI
如果这是第一次迁移,需要安装 GEI extension of the GitHub CLI。 有关 GitHub CLI 的详细信息,请参阅“关于 GitHub CLI”。
此外,也可以从 github/gh-gei
存储库的版本页面下载一个独立的二进制文件。 可以直接运行此二进制文件,无需使用前缀 gh
。
-
安装 GitHub CLI。 有关 GitHub CLI 的安装说明,请参阅 GitHub CLI 存储库。
Note
需要 GitHub CLI 版本 2.4.0 或更高版本。 可以使用
gh --version
命令检查已安装的版本。 -
安装 GEI extension。
Shell gh extension install github/gh-gei
gh extension install github/gh-gei
每当需要 GEI extension 的帮助时,都可以将 --help
标志与命令一起使用。 例如,gh gei --help
将列出所有可用命令,gh gei migrate-repo --help
将列出 migrate-repo
命令的所有可用选项。
步骤 2:更新 GEI extension of the GitHub CLI
GEI extension 每周更新一次。 为了确保使用的是最新版本,请更新扩展。
gh extension upgrade github/gh-gei
步骤 3:设置环境变量
在使用 GEI extension 迁移到 GitHub Enterprise Cloud 之前,必须创建可以访问源和目标组织的 personal access token,然后将 personal access token 设置为环境变量。
-
创建并记录一个 personal access token (classic),用于在 GitHub Enterprise Cloud 上为目标组织进行身份验证,确保令牌满足所有要求。 有关详细信息,请参阅“管理 GitHub 产品之间迁移的访问权限”。
-
创建并记录一个 personal access token,用于对源组织进行身份验证的,确保此令牌也满足所有相同的要求。
-
为 personal access token 设置环境变量,将以下命令中的 TOKEN 替换为上面记录的 personal access token。 将
GH_PAT
用于目标组织,并将GH_SOURCE_PAT
用于源组织。-
如果使用终端,请使用
export
命令。Shell export GH_PAT="TOKEN" export GH_SOURCE_PAT="TOKEN"
export GH_PAT="TOKEN" export GH_SOURCE_PAT="TOKEN"
-
如果使用 PowerShell,请使用
$env
命令。Shell $env:GH_PAT="TOKEN" $env:GH_SOURCE_PAT="TOKEN"
$env:GH_PAT="TOKEN" $env:GH_SOURCE_PAT="TOKEN"
-
-
如果要迁移到 具有数据驻留的 GitHub Enterprise Cloud,为方便起见,请为企业的基 API URL 设置环境变量。**** 例如:
Shell export TARGET_API_URL="https://api.octocorp.ghe.com"
export TARGET_API_URL="https://api.octocorp.ghe.com"
在使用 GitHub CLI 运行的命令中,将此变量与
--target-api-url
选项一起使用。
步骤 4:生成迁移脚本
如果要一次性将多个存储库迁移到 GitHub Enterprise Cloud,请使用 GitHub CLI 生成迁移脚本。 生成的脚本将包含迁移命令的列表(每个存储库一个)。
如果要迁移单个存储库,请跳到下一步。
生成迁移脚本
若要生成迁移脚本,请运行 gh gei generate-script
命令。
gh gei generate-script --github-source-org SOURCE --github-target-org DESTINATION --output FILENAME
gh gei generate-script --github-source-org SOURCE --github-target-org DESTINATION --output FILENAME
如果将 GEI 作为一个独立的二进制文件而不是 GitHub CLI 的一个扩展下载,则需要更新所生成的脚本,以运行此二进制文件而不是 gh gei
。
占位符
将上述命令中的占位符替换为以下值。
占位符 | 值 |
---|---|
源 | 源组织名称 |
目标 | 目标组织的名称 |
FILENAME | 生成的迁移脚本的文件名 如果使用终端,请使用 .ps1 文件扩展名,因为生成的脚本需要 PowerShell 才能运行。 可以安装适用于 Mac 或 Linux 的 PowerShell。 |
其他参数
Argument | 说明 |
---|---|
--target-api-url TARGET-API-URL | 如果要迁移到 GHE.com,请添加 --target-api-url TARGET-API-URL ,其中 TARGET-API-URL 是企业的子域的基本 API URL。 例如:https:/ 。 |
--download-migration-logs | 下载每个已迁移存储库的迁移日志。 有关迁移日志的详细信息,请参阅“访问 GitHub Enterprise Importer 的迁移日志”。 |
查看迁移脚本
生成脚本后,查看文件,并根据需要编辑脚本。
- 如果有任何不想迁移的存储库,请删除或注释禁止相应的行。
- 如果希望任何存储库在目标组织中具有不同的名称,请更新相应
--target-repo
标志的值。 - 如果要更改新存储库的可见性,请更新相应的
--target-repo-visibility
标志的值。 默认情况下,脚本设置与源存储库相同的可见性。
如果存储库的发布数据超过 10 GB,则无法迁移发布。 使用 --skip-releases
标志即可在不迁移发布的情况下迁移存储库。
如果将 GEI 作为一个独立的二进制文件而不是 GitHub CLI 的一个扩展下载,则需要更新所生成的脚本,以运行此二进制文件而不是 gh gei
。
步骤 5:迁移存储库
可以使用迁移脚本迁移多个存储库,也可以使用 gh gei migrate-repo
命令迁移单个存储库。
迁移多个存储库
要迁移多个存储库,请运行上面生成的脚本。 将以下命令中的 FILENAME 替换为生成脚本时提供的文件名。
-
如果使用终端,请使用
./
。Shell ./FILENAME
./FILENAME
-
如果使用 PowerShell,请使用
.\
。Shell .\FILENAME
.\FILENAME
迁移单个存储库
要迁移单个存储库,请使用 gh gei migrate-repo
命令。
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME
占位符
将上述命令中的占位符替换为以下值。
占位符 | 值 |
---|---|
源 | 源组织名称 |
CURRENT-NAME | 要迁移的存储库的名称 |
目标 | 目标组织的名称 |
NEW-NAME | 希望已迁移的存储库具有的名称 |
其他参数
Argument | 说明 |
---|---|
--target-api-url TARGET-API-URL | 如果要迁移到 GHE.com,请添加 --target-api-url TARGET-API-URL ,其中 TARGET-API-URL 是企业的子域的基本 API URL。 例如:https:/ 。 |
--skip-releases | 如果存储库的发布数据超过 10 GB,则无法迁移发布。 使用 --skip-releases 标志即可在不迁移发布的情况下迁移存储库。 |
--target-repo-visibility TARGET-VISIBILITY | 默认情况下,存储库都以专用可见性进行迁移。 若要设置可见性,可以添加 --target-repo-visibility 标志,以指定 private 、public 或 internal 。 如果要迁移到 具有托管用户的企业,则公共存储库不可用。 |
中止迁移
如果要取消迁移,请使用 abort-migration
命令,将 MIGRATION-ID 替换为从 migrate-repo
返回的 ID。
gh gei abort-migration --migration-id MIGRATION-ID
gh gei abort-migration --migration-id MIGRATION-ID
步骤 6:验证迁移并检查错误日志
迁移完成后,建议查看迁移日志。 有关详细信息,请参阅“访问 GitHub Enterprise Importer 的迁移日志”。
建议查看已迁移的存储库以进行完整性检查。