Skip to main content

Bitbucket サーバーから GitHub Enterprise クラウドへの移行について

GitHub Enterprise Importer がどのデータを移行できるかを確認します。

Bitbucket Server からの移行について

GitHub Enterprise Importer を使って、リポジトリを Bitbucket Server から GitHub Enterprise Cloud (GitHub.com または GHE.com) に移行できます。 Bitbucket Server からの移行は、Bitbucket Server または Bitbucket Data Center バージョン 5.14 以降でのみサポートされています。

移行されるデータ

現在、次のリポジトリ データのみについて、Bitbucket Server から GitHub Enterprise Cloud への移行がサポートされています。

  • Git ソース (コミット履歴を含む)

  • pull request (コメント、pull request レビュー、ファイルおよび行レベルでの pull request レビュー コメント、必要なレビュー担当者、添付ファイルを含む)

    Note

    ユーザーは、pull request を表示しようとしたときに、pull request がマージされ、移行前に Bitbucket Server で head ブランチが削除された場合に、500 エラーを受け取る可能性があります。 Bitbucket Server は、このような pull request のオブジェクトへの特定の Git 参照を削除するため、pull request に関連付けられている Git オブジェクトは移行できません。

移行されないデータ

現時点では、次のデータは移行されません

  • ユーザーが所有する個人用リポジトリ
  • 分岐アクセス許可
  • コミットのコメント
  • リポジトリ設定
  • CI パイプライン

移行されたデータに関する制限

GitHub Enterprise Importer で何を移行できるかについては、制限があります。 GitHub の制限に起因するものもあれば、GitHub Enterprise Importer 自体の制限事項であるものもあります。

GitHub の制限事項

  • 1 つの Git コミットに対する 2 GB のサイズ制限: Git リポジトリ内の 1 つのコミットが 2 GB を超えることはできません。 いずれかのコミットが 2 GB を超える場合は、そのコミットを、それぞれが 2 GB 以下の小さなコミットに分割する必要があります。
  • Git 参照の 255 バイトの制限: "ref" と呼ばれる 1 つの Git 参照には、255 バイトを超える名前を付けることはできません。 通常、これは、参照の長さは 255 文字を超えることはできませんが、絵文字などの ASCII 以外の文字は複数バイトを消費する可能性があることを意味します。 いずれかの Git 参照が大きすぎる場合は、明確なエラー メッセージが返されます。
  • 100 MB のファイル サイズ制限: Git リポジトリ内の 1 つのファイルが 100 MB を超えることはできません。 大きなファイルを格納するためには、Git LFS を使用することを検討してください。 詳しくは、「大きなファイルを管理する」を参照してください。

GitHub Enterprise Importer の制限事項

  • Git リポジトリの 10 GB のサイズ制限: この制限はソース コードにのみ適用されます。 リポジトリ アーカイブが制限を超えているかどうかをチェックするには、git-sizer ツールを使用して出力の合計 BLOB サイズを確認します。 git-sizer ツールは、大きなファイル、BLOB サイズ、コミット サイズ、移行に影響する恐れがあるツリー数に関連する潜在的な問題を特定することにも役立ちます。
  • メタデータの 10 GB の制限: 10 GB を超えるメタデータを持つリポジトリは、Importer で移行できません。 メタデータには、issue、pull request、リリース、添付ファイルが含まれます。 ほとんどの場合、大きなメタデータの原因は、リリースにアタッチされたバイナリ資産です。 migrate-repo コマンドの --skip-releases フラグを使用して移行からリリースを除外し、移行後にリリースを手動で移動できます。
  • Git LFS オブジェクトは移行されない: Importer で、Git LFS を使用するリポジトリを移行できますが、LFS オブジェクト自体は移行されません。 これらは、移行完了後にフォローアップ タスクとして移行先にプッシュできます。 詳しくは、「リポジトリを複製する」を参照してください。
  • 必要なフォローアップ タスク: GitHub 製品間で移行する場合、特定の設定は移行されず、新しいリポジトリで再構成する必要があります。 それぞれの移行後に完了する必要があるフォローアップ タスクの一覧については、「GitHub 製品間の移行に関する概要」を参照してください。
  • 遅延コード検索機能: リポジトリ移行後の検索インデックスの再作成には数時間かかることがあります。また、インデックスの再作成が完了するまで、コード検索で予期しない結果が返される可能性があります。
  • Organization 用に構成されたルールセットによって移行が失敗する可能性がある: たとえば、コミット作成者のメール アドレスが @monalisa.cat で終わるように要求するルールを構成し、移行するリポジトリにこのルールに準拠していないコミットが含まれている場合、移行は失敗します。 ルールセットについて詳しくは、「ルールセットについて」をご覧ください。
  • マネキンの内容が検索できない場合あり: マネキンは、インポートされた内容 (問題、pull request、コメントなど) が関連付けられているプレースホルダー ユーザーです。 割り当てられた問題など、マネキンに関連付けられている内容を検索しても、問題が見つからない可能性があります。 マネキンが回収されると、新しい所有者を介してコンテンツが見つかります。 詳しくは、「GitHub Enterprise Importer のマネキンの回収」を参照してください。

作業の開始

Bitbucket Server から移行する前に、移行の実行方法を計画する必要があります。  データを移行する前に、移行を実行する名前未登録ユーザーを選択する必要があります。  移行元と移行先の両方に必要なアクセス権をそのユーザーに付与する必要があります。  また、最初に試用版の移行を実行することをお勧めします。

最初から最後までの移行プロセスの概要については、「Bitbucket サーバーから GitHub Enterprise クラウドへの移行の概要」を参照してください。