GitHub でソース Organization を準備する
-
ソースOrganizationのリポジトリにオーナー権限を持っていることを確認してください。
-
GitHub.com上の
repo
及びadmin:org
スコープでアクセストークンを生成してください。。 -
ダウンタイムを最小化するには、ソースインスタンスからエクスポートしたいリポジトリのリストを作成してください。 各行にそれぞれのリポジトリのURLをリストアップしたテキストファイルを使えば、複数のリポジトリをエクスポートに一度に追加できます。
Exporting the organization's repositories
ノート: フォークの関係は移行のあとまで存続しません。
GitHub.com からリポジトリデータをエクスポートするには、移行 API を使います。
移行APIは現在プレビュー期間です。すなわち、エンドポイントとパラメータは将来変更されることがあります。 移行APIにアクセスするには、カスタムのメディアタイプとしてapplication/vnd.github.wyandotte-preview+json
をAccept
ヘッダで渡さなければなりません。 以下の例にはカスタムのメディアタイプが含まれています。
移行アーカイブの生成
ノート: リポジトリをロックすると、ユーザはそのリポジトリにプッシュしたり、Issue、ラベル、マイルストーン、wiki、コメントといったリポジトリのリソースを修正したりできなくなります。 新しいTeamやコラボレータは、ロックされたリポジトリに関連づけできません。
トライアル実行をしているなら、リポジトリをロックする必要はありません。 そうでない場合は、ロックすることを強くおすすめします。 詳細は「移行について」を参照してください。
-
移行を行うOrganizationのメンバーに通知します。 エクスポートには、対象のリポジトリ数に応じて数分がかかることがあります。 インポートを含む完全な移行には何時間もかかる可能性があるため、完全な処理にかかる時間を判断するためにまず試行することをおすすめします。 詳細は「移行について」を参照してください。
-
移行エンドポイントに
POST
することで移行を開始します。 以下が必要です:- 認証のためのアクセストークン。
- 移行するリポジトリのリスト。
curl -H "Authorization: token GITHUB_ACCESS_TOKEN" -X POST \ -H "Accept: application/vnd.github.wyandotte-preview+json" \ -d'{"lock_repositories":true,"repositories":["orgname/reponame", "orgname/reponame"]}' \ https://api.github.com/orgs/orgname/migrations
- 移行する前にリポジトリをロックするには、
lock_repositories
がtrue
になっていることを確認してください。 これについては強くおすすめします。 exclude_attachments: true
をエンドポイントに渡すと、添付ファイルを除外できます。 添付ファイルは大きくなる場合があり、最終的なマイグレーションアーカイブを不必要に膨らませてしまう場合があります。 最終的なアーカイブのサイズは 20 GB 未満でなければなりません。
このリクエストは移行を表す一意の
id
を返します。 これは次の移行 API の呼び出しに必要となります。 -
GET
リクエストを移行ステータスエンドポイントに送って移行のステータスをフェッチします。 以下が必要です:- 認証のためのアクセストークン。
- 移行の一意の
id
。curl -H "Authorization: token GITHUB_ACCESS_TOKEN" \ -H "Accept: application/vnd.github.wyandotte-preview+json" \ https://api.github.com/orgs/orgname/migrations/id
移行のステータスは以下のいずれかになります:
pending
。移行がまだ始まっていないことを示します。exporting
。移行が進行中であることを示します。exported
。移行が正常に終了したことを示します。failed
。移行に失敗したことを示します。
-
移行がエクスポートされたら、
GET
リクエストを移行ダウンロードエンドポイントに送って移行アーカイブをダウンロードします。 以下が必要です:- 認証のためのアクセストークン。
- 移行の一意の
id
。curl -H "Accept: application/vnd.github.wyandotte-preview+json" \ -u GITHUB_USERNAME:GITHUB_ACCESS_TOKEN \ -L -o migration_archive.tar.gz \ https://api.github.com/orgs/orgname/migrations/id/archive
-
移行アーカイブは 7 日間経過すると自動的に削除されます。 もっと早く削除したい場合は、
DELETE
リクエストを移行アーカイブ削除エンドポイントに送ることもできます。 以下が必要です:- 認証のためのアクセストークン。
- 移行の一意の
id
。curl -H "Authorization: token GITHUB_ACCESS_TOKEN" -X DELETE \ -H "Accept: application/vnd.github.wyandotte-preview+json" \ https://api.github.com/orgs/orgname/migrations/id/archive
-
アーカイブされたマイグレーションデータを GitHub Enterprise Server のインスタンスにインポートする方法については「GitHub Enterprise Server へのマイグレーションデータのインポート」を参照してください。