Skip to main content

Enterprise へのデータ移行の準備

移行アーカイブを作成すると、ターゲットの GitHub Enterprise Server インスタンスにデータをインポートできます。 変更を恒久的にターゲットのインスタンスに適用する前に、潜在的なコンフリクトがないか変更をレビューできます。

移行したデータを GitHub Enterprise Server にインポートするための準備

  1. scp コマンドを使用して、ソース インスタンスまたは Organization から生成された移行アーカイブを GitHub Enterprise Server ターゲットにコピーします。

    $ scp -P 122 /path/to/archive/MIGRATION_GUID.tar.gz admin@hostname:/home/admin/
  2. サイト管理者として、ターゲットの GitHub Enterprise Server インスタンスに SSH で接続します

    $ 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. 移行 GUID を指定した ghe-migrator conflicts コマンドを使用して、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ソースからのデータがターゲット上の既存のデータで置き換えられます。Users、organizations、repositories
renameソースからのデータは名前が変更されてターゲットにコピーされます。Users、organizations、repositories
map_or_renameターゲットが存在する場合、そのターゲットにマップします。 そうでない場合はインポートされたモデルの名前を変更します。ユーザー
mergeソースからのデータはターゲット上の既存のデータと組み合わされます。Teams

conflicts.csv ファイルを確認し、ghe-migrator audit を使用して、確実に適切なアクションが実行されるようにすることを強くお勧めします。 すべて問題ないようであれば、「Enterprise にデータを移行する」に進むことができます。

移行コンフリクトの解決もしくはカスタムマッピングのセットアップ

ghe-migrator で正しくない変更が行われると思われる場合は、conflicts.csv 内でデータを変更することによって修正できます。 conflicts.csv 内の任意の行を変更できます。

たとえば、ソースの octocat ユーザーがターゲットの octocat にマップされていることに気付いたとしましょう。

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

このユーザをターゲット上の他のユーザにマップさせることができます。 octocat が実際にはターゲットの monalisa であるべきだとわかっているとします。 monalisa を示すように、conflicts.csvtarget_url 列を変更することができます。

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

別の例として、octo-org/widgets リポジトリの名前をターゲット インスタンスの octo-org/amazing-widgets に変更する場合は、target_urlocto-org/amazing-widgets、および recommend_actionrename に変更します。

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 を入力してから、4 番目の列を更新し、適宜、map または rename が含まれるようにすることができます。

たとえば、ユーザー octocat の名前をターゲット https://example-gh.targetmonalisa に変更するには、次の内容の行を作成します。

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 コマンドで競合がまだ存在することが報告された場合は、移行の競合解決プロセスをもう一度実行します。