Bitbucket CloudからGitLabへプロジェクトをインポート

note
Bitbucket Cloud インポーターはBitbucket.org でのみ動作し、Bitbucket Server (別名 Stash) では動作しません。Bitbucket Serverからプロジェクトをインポートする場合は、Bitbucket Serverインポーターを使用してください。

最小限の労力でBitbucket CloudからGitLabにプロジェクトをインポートしましょう。

Bitbucket インポーターはインポートできます:

  • リポジトリの説明
  • Git リポジトリのデータ
  • イシュー
  • イシューコメント
  • プルリクエスト
  • プルリクエストコメント
  • マイルストーン
  • Wiki

インポート時:

  • プルリクエストやイシューへの参照は保持されます。
  • リポジトリの公開は保持されます。Bitbucket でリポジトリが非公開の場合、GitLab でも非公開として作成されます。

前提条件

GitLab16.0で導入され、GitLab15.11.1とGitLab15.10.5にバックポートされたDeveloperロールの代わりにMaintainerロールの要件。

  • Bitbucket Cloudインテグレーションが有効になっている必要があります。インテグレーションが有効になっていない場合は、GitLab管理者に有効にしてもらうよう依頼してください。Bitbucket CloudインテグレーションはGitLab.comではデフォルトで有効になっています。
  • Bitbucket Cloudのインポートソースが有効になっている必要があります。有効になっていない場合は、GitLab管理者に有効化するよう依頼してください。Bitbucket CloudインポートソースはGitLab.comでデフォルトで有効になっています。
  • インポート先のグループで、少なくともメンテナーのロールがあること。

どのように動作するか

イシュー/プルリクエストがインポートされるとき、Bitbucketインポーターは作成者/担当者のBitbucketニックネームを使い、GitLabで同じBitbucket IDを見つけようとします。もし一致しなかったり、GitLabのデータベースでユーザーが見つからなかったりした場合、プロジェクト作成者(ほとんどの場合、インポートプロセスを開始した現在のユーザー)が作成者として設定されますが、オリジナルのBitbucket作成者に関するイシューの参照は保持されます。

インポーターは、新しいネームスペース(グループ)が存在しない場合は作成し、ネームスペースが取られている場合は、インポートプロセスを開始したユーザーのネームスペースでリポジトリがインポートされます。

ユーザーマップされた貢献の要件

ユーザー貢献をマッピングするためには、各ユーザーはプロジェクトのインポートの前に以下を完了する必要があります:

  1. Bitbucket アカウント設定のユーザー名が、Atlassian アカウント設定の公開名と一致していることを確認します。一致しない場合は、Bitbucket アカウント設定のユーザー名と一致するように、Atlassian アカウント設定の公開名を修正します。

  2. GitLab プロファイルサービスのサインインで Bitbucket アカウントを接続します。

  3. 公開メールを設定します。

Bitbucket リポジトリのインポート

GitLab 15.9で導入されたプロジェクトの再インポート機能。

  1. GitLab にサインインします。
  2. 左サイドバーの上部にある「新規作成({plus})」と「新規プロジェクト/リポジトリ」を選択します。
  3. プロジェクトのインポートを選択します。
  4. Bitbucket Cloudを選択します。
  5. Bitbucketにログインし、BitbucketアカウントへのGitLabアクセスを許可します。

    Grant access

  6. インポートしたいプロジェクトを選択するか、全てのプロジェクトをインポートします。プロジェクトを名前でフィルタリングし、各プロジェクトがインポートされるネームスペースを選択できます。

  7. プロジェクトをインポートします:
    • 初めてプロジェクトをインポートする場合インポートを選択します。
    • もう一度再インポートを選択します。新しい名前を指定し、再度インポートを選択します。再インポートすると、ソースプロジェクトの新しいコピーが作成されます。

トラブルシューティング

複数のBitbucketアカウントを持っている場合

必ず正しいアカウントにサインインしてください。

誤って間違ったアカウントでインポートプロセスを開始してしまった場合は、以下の手順に従ってください:

  1. Bitbucket アカウントへの GitLab アクセスを失効させ、実質的に以下の手順のプロセスを逆にします:Bitbucket リポジトリをインポートします。

  2. Bitbucket アカウントからサインアウトします。前のステップからリンクされている手順に従ってください。

ユーザー名が一致するにもかかわらず、ユーザーマッピングに失敗します。

ユーザーマッピングが機能するためには、Bitbucket アカウント設定のユーザー名が Atlassian アカウント設定の公開名と一致している必要があります。これらの名前が一致してもユーザーマッピングが失敗する場合は、GitLab プロファイルサービスのサインインでBitbucket アカウントを接続した後に、ユーザーが Bitbucket のユーザー名を変更している可能性があります。

これを修正するには、ユーザーは GitLab データベース内の Bitbucket 外部 UID が現在の Bitbucket 公開名と一致することを確認し、不一致がある場合は再接続する必要があります:

  1. API を使って、現在認証されているユーザーを取得します。

  2. API レスポンスでは、identities 属性に GitLab データベースに存在する Bitbucket アカウントが含まれます。extern_uid が現在の Bitbucket 公開名と一致しない場合、ユーザーはGitLab プロファイルサービスのサインインでBitbucket アカウントを再接続する必要があります。

  3. 再接続後、ユーザーは再度APIを使用して、GitLabデータベース内の自分のextern_uid が現在のBitbucket公開名と一致していることを確認する必要があります。

その後、インポーターはインポートしたプロジェクトを削除し、再度インポートする必要があります。