Skip to main content

此版本的 GitHub Enterprise 已停止服务 2022-10-12. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

准备将数据迁移到企业

生成迁移存档后,您可以将数据导入目� � GitHub Enterprise Server 实例。 在将变更永久应用到目� �实例之前,您需要检查变更,查看有� 潜在的冲突。

准备迁移的数据以导入到 GitHub Enterprise Server

  1. 使用 scp 命令,将从源实例或组织生成的迁移存档复制到 GitHub Enterprise Server 目� �:

    $ scp -P 122 /path/to/archive/MIGRATION_GUID.tar.gz admin@hostname:/home/admin/
  2. 作为站点管理员,通过 SSH 连接到目� � GitHub Enterprise Server 实例

    $ ssh -p 122 admin@HOSTNAME
  3. 使用 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

生成迁移冲突列表

  1. ghe-migrator conflicts 命令与迁移 GUID 配合使用,生成 conflicts.csv 文件:
    $ ghe-migrator conflicts -g MIGRATION_GUID > conflicts.csv
  2. 如果存在冲突,请使用 scp 命令将 conflicts.csv 复制到本地计算机:
    $ scp -P 122 admin@hostname:conflicts.csv ~/Desktop
  3. 继续执行“解决迁移冲突或设置自定义� 射”。

检查迁移冲突

  1. 使用文本编辑器或者与 CSV 兼容的电子表� �软件,打开 conflicts.csv。
  2. 按照示例中的指导和下面的参考表检查 conflicts.csv 文件,确保导入时将发生正确的操作。

conflicts.csv 文件包含冲突的迁移� 射和建议操作。 迁移� 射列出了数据的迁移来源和数据应用到目� �的方式。

model_namesource_urltarget_urlrecommended_action
userhttps://example-gh.source/octocathttps://example-gh.target/octocatmap
organizationhttps://example-gh.source/octo-orghttps://example-gh.target/octo-orgmap
repositoryhttps://example-gh.source/octo-org/widgetshttps://example-gh.target/octo-org/widgetsrename
teamhttps://example-gh.source/orgs/octo-org/teams/adminshttps://example-gh.target/orgs/octo-org/teams/adminsmerge

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_namesource_urltarget_urlrecommended_action
userhttps://example-gh.source/octocathttps://example-gh.target/octocatmap

您可以选择将用户� 射到目� �上的其他用户。 假设� 知道 octocat 实际上应该是位于目� �上的 monalisa。 可以更改 conflicts.csv 中的 target_url 列以引用 monalisa

model_namesource_urltarget_urlrecommended_action
userhttps://example-gh.source/octocathttps://example-gh.target/monalisamap

再举一个例子,如果要在目� �实例上将 octo-org/widgets 存储库重命名为 octo-org/amazing-widgets,请将 target_url 更改为 octo-org/amazing-widgets,将 recommend_action 更改为 rename

model_namesource_urltarget_urlrecommended_action
repositoryhttps://example-gh.source/octo-org/widgetshttps://example-gh.target/octo-org/amazing-widgetsrename

添� 自定义� 射

迁移过程中一个常见的情况是,迁移用户的用户名在目� �上与在源上不同。

如果拥有源中的用户名列表和目� �上的用户名列表,您可以通过自定义� 射构建一个 CSV 文件,然后应用此文件,确保迁移结束时每个用户的用户名和内容都有正确的� 射。

可以使用 ghe-migrator audit 命令,以 CSV � �式快速生成应用自定义� 射所需的正在迁移的用户的 CSV:

$ ghe-migrator audit -m user -g MIGRATION_GUID > users.csv

现在,� 可以编辑该 CSV,并为� 想要� 射或重命名的每个用户输入新 URL,然后� �据需要将第四列更新为包含 maprename

例如,若要在目� � https://example-gh.target 上将用户 octocat 重命名为 monalisa,需创建包含以下内容的行:

model_namesource_urltarget_urlstate
userhttps://example-gh.source/octocathttps://example-gh.target/monalisarename

可以使用相同的流程为支持自定义� 射的每个记录创建� 射。 有关详细信息,请参阅有关记录的可能� 射的表

应用修改的迁移数据

  1. 进行更改后,使用 scp 命令将修改后的 conflicts.csv(或具有正确� �式的任何其他� 射 .csv 文件)应用于目� �实例:

    $ scp -P 122 ~/Desktop/conflicts.csv admin@hostname:/home/admin/
  2. 使用 ghe-migrator map 命令重新� 射迁移数据,并� 入修改后的 .csv 文件的路径和迁移 GUID:

    $ ghe-migrator map -i conflicts.csv  -g MIGRATION_GUID
  3. 如果 ghe-migrator map -i conflicts.csv -g MIGRATION_GUID 命令报告冲突仍然存在,请再次运行迁移冲突解决过程。