准备迁移的数据以导入到 GitHub Enterprise Server
-
使用
scp
命令,将从源实例或组织生成的迁移存档复制到 GitHub Enterprise Server 目� �:$ scp -P 122 /path/to/archive/MIGRATION_GUID.tar.gz admin@hostname:/home/admin/
-
作为站点管理员,通过 SSH 连接到目� � GitHub Enterprise Server 实例。
$ ssh -p 122 admin@HOSTNAME
-
使用
ghe-migrator prepare
命令准备要在目� �实例上导入的存档,并生成新的迁移 GUID 供� 在后续步骤中使用:ghe-migrator prepare /home/admin/MIGRATION_GUID.tar.gz
- 若要启动新的导入尝试,请再次运行
ghe-migrator prepare
并获取新的迁移 GUID。 - 要指定迁移文件的暂存位置,请在命令后附�
--staging-path=/full/staging/path
。 默认为/data/user/tmp
。
- 若要启动新的导入尝试,请再次运行
生成迁移冲突列表
- 将
ghe-migrator conflicts
命令与迁移 GUID 配合使用,生成 conflicts.csv 文件:$ ghe-migrator conflicts -g MIGRATION_GUID > conflicts.csv
- 如果未报告任何冲突,则可以按照“将数据迁移到企业”中的步骤安全地导入数据。
- 如果存在冲突,请使用
scp
命令将 conflicts.csv 复制到本地计算机:$ scp -P 122 admin@hostname:conflicts.csv ~/Desktop
- 继续执行“解决迁移冲突或设置自定义� 射”。
检查迁移冲突
- 使用文本编辑器或者与 CSV 兼容的电子表� �软件,打开 conflicts.csv。
- 按照示例中的指导和下面的参考表检查 conflicts.csv 文件,确保导入时将发生正确的操作。
conflicts.csv 文件包含冲突的迁移� 射和建议操作。 迁移� 射列出了数据的迁移来源和数据应用到目� �的方式。
model_name | source_url | target_url | recommended_action |
---|---|---|---|
user | https://example-gh.source/octocat | https://example-gh.target/octocat | map |
organization | https://example-gh.source/octo-org | https://example-gh.target/octo-org | map |
repository | https://example-gh.source/octo-org/widgets | https://example-gh.target/octo-org/widgets | rename |
team | https://example-gh.source/orgs/octo-org/teams/admins | https://example-gh.target/orgs/octo-org/teams/admins | merge |
conflicts.csv 中的每一行都提供了以下信息:
名称 | 说明 |
---|---|
model_name | 正在更改的数据的类型。 |
source_url | 数据的源 URL。 |
target_url | 数据的预期目� � URL。 |
recommended_action | 导入数据时 ghe-migrator 将执行的首选操作。 |
每个记录类型的可能� 射
转移数据时,ghe-migrator
可以执行多种不同的� 射操作:
action | 说明 | 适用的模型 |
---|---|---|
import | (默认)源中的数据将导入目� �。 | 所有记录类型 |
map | 源中的数据将被目� �上的现有数据替换。 | 用户、组织和仓库 |
rename | 源中的数据将重命名,然后复制到目� �。 | 用户、组织和仓库 |
map_or_rename | 如果存在目� �,请� 射到该目� �。 否则,请重命名导入的模型。 | 用户 |
merge | 源中的数据将与目� �中的现有数据合并。 | Teams |
强烈建议查看 conflicts.csv文件,并使用该 ghe-migrator audit
文件来确保执行适当的操作。 如果一切正常,可以继续执行“将数据迁移到企业”。
解决迁移冲突或设置自定义� 射
如果� 认为 ghe-migrator
将执行不正确的变更,可以通过更改 conflicts.csv 中的数据进行修改。 可以更改 conflicts.csv 中的任意行。
例如,假设� 注意到 octocat
源中的用户正� 射到目� �上的 octocat
:
model_name | source_url | target_url | recommended_action |
---|---|---|---|
user | https://example-gh.source/octocat | https://example-gh.target/octocat | map |
您可以选择将用户� 射到目� �上的其他用户。 假设� 知道 octocat
实际上应该是位于目� �上的 monalisa
。 可以更改 conflicts.csv 中的 target_url
列以引用 monalisa
:
model_name | source_url | target_url | recommended_action |
---|---|---|---|
user | https://example-gh.source/octocat | https://example-gh.target/monalisa | map |
再举一个例子,如果要在目� �实例上将 octo-org/widgets
存储库重命名为 octo-org/amazing-widgets
,请将 target_url
更改为 octo-org/amazing-widgets
,将 recommend_action
更改为 rename
:
model_name | source_url | target_url | recommended_action |
---|---|---|---|
repository | https://example-gh.source/octo-org/widgets | https://example-gh.target/octo-org/amazing-widgets | rename |
添� 自定义� 射
迁移过程中一个常见的情况是,迁移用户的用户名在目� �上与在源上不同。
如果拥有源中的用户名列表和目� �上的用户名列表,您可以通过自定义� 射构建一个 CSV 文件,然后应用此文件,确保迁移结束时每个用户的用户名和内容都有正确的� 射。
可以使用 ghe-migrator audit
命令,以 CSV � �式快速生成应用自定义� 射所需的正在迁移的用户的 CSV:
$ ghe-migrator audit -m user -g MIGRATION_GUID > users.csv
现在,� 可以编辑该 CSV,并为� 想要� 射或重命名的每个用户输入新 URL,然后� �据需要将第四列更新为包含 map
或 rename
。
例如,若要在目� � https://example-gh.target
上将用户 octocat
重命名为 monalisa
,需创建包含以下内容的行:
model_name | source_url | target_url | state |
---|---|---|---|
user | https://example-gh.source/octocat | https://example-gh.target/monalisa | rename |
可以使用相同的流程为支持自定义� 射的每个记录创建� 射。 有关详细信息,请参阅有关记录的可能� 射的表。
应用修改的迁移数据
-
进行更改后,使用
scp
命令将修改后的 conflicts.csv(或具有正确� �式的任何其他� 射 .csv 文件)应用于目� �实例:$ scp -P 122 ~/Desktop/conflicts.csv admin@hostname:/home/admin/
-
使用
ghe-migrator map
命令重新� 射迁移数据,并� 入修改后的 .csv 文件的路径和迁移 GUID:$ ghe-migrator map -i conflicts.csv -g MIGRATION_GUID
-
如果
ghe-migrator map -i conflicts.csv -g MIGRATION_GUID
命令报告冲突仍然存在,请再次运行迁移冲突解决过程。