Bitbucket Serverからプロジェクトをインポートします。

GitLab 11.2で導入されました

note
このプロセスはBitbucket Cloud からのインポートとは異なります。

Bitbucket Serverからはインポートできます:

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

インポートの際、リポジトリの公開は保持されます。Bitbucket でリポジトリが非公開の場合、GitLab でも非公開として作成されます。

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

  • GitLab 15.9で導入されたプロジェクトの再インポート機能。
  • GitLab 16.3 で導入されたレビュアーインポート機能。

Bitbucket リポジトリを GitLab にインポートできます。

前提条件

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

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

リポジトリのインポート

Bitbucketリポジトリをインポートします:

  1. GitLab にサインインします。
  2. 左サイドバーの上部にある「新規作成({plus})」と「新規プロジェクト/リポジトリ」を選択します。
  3. プロジェクトのインポートを選択します。
  4. Bitbucket Serverを選択します。
  5. Bitbucketにログインし、BitbucketアカウントへのGitLabアクセスを許可します。
  6. インポートするプロジェクトを選択するか、全てのプロジェクトをインポートします。プロジェクトを名前でフィルタリングし、各プロジェクトをインポートするネームスペースを選択できます。
  7. プロジェクトをインポートします:
    • 初めてプロジェクトをインポートする場合インポートを選択します。
    • もう一度再インポートを選択します。新しい名前を指定し、再度インポートを選択します。再インポートすると、ソースプロジェクトの新しいコピーが作成されます。

インポートされない項目

以下の項目はインポートされません:

  • プルリクエストの承認者
  • Markdownでの添付ファイル
  • タスクリスト
  • 絵文字リアクション

インポートされたアイテムが変更されました。

以下の項目はインポート時に変更されます:

  • GitLab は任意のコード行へのコメントを許可しません。Bitbucket の範囲外のコメントはマージリクエストのコメントとして挿入されます。
  • 複数のスレッドレベルはひとつのスレッドにまとめられ、引用符は元のコメントの一部として追加されます。
  • 辞退されたプルリクエストには到達できないコミットがあります。これらのプルリクエストは空の変更として表示されます。
  • プロジェクトのフィルタリングはあいまい検索をサポートしていません。で始まる文字列か完全一致の文字列のみがサポートされます。

ユーザー割り当て

前提条件

  • 管理者権限のある認証トークン。

イシューやプルリクエストをインポートする際、インポーターは GitLab ユーザーデータベースで確認された作成者のメールアドレスを見つけようとします。そのようなユーザーがいない場合、プロジェクト作成者が作成者として設定されます。インポーターはコメントにオリジナルの作成者を示すメモを追加します。

インポーターは、新しい名前空間(グループ)が存在しない場合はそれを作成します。名前空間が取られている場合、リポジトリはインポート処理を開始したユーザーの名前空間でインポートします。

インポーターは、GitLabユーザーデータベースのメールアドレスからレビュアーを見つけようとします。GitLab に存在しない場合、マージリクエストにレビュアーとして追加することはできません。

ユーザー名によるユーザー割り当て

  • GitLab 13.4 でbitbucket_server_user_mapping_by_usernameというフラグで導入されました。デフォルトでは無効になっています。
  • デフォルトでは無効です。

フラグ: セルフマネジメントのGitLabとGitLab.comでは、デフォルトではこの機能は利用できません。利用可能にするには、管理者がbitbucket_server_user_mapping_by_usernameという機能フラグを有効にします。この機能は、本番環境での使用には適していません。

この機能を有効にすると、インポーターはGitLabユーザーデータベースから作成者のユーザーを見つけようとします:

  • username
  • slug
  • displayName

これらのプロパティに一致するユーザーがいない場合は、プロジェクト作成者が作成者として設定されます。

トラブルシューティング

全般

GUIベースのインポートツールでうまくいかない場合は、次の方法を試してみてください:

Bitbucket Cloud のトラブルシューティングセクションを参照してください。

LFS オブジェクトがインポートされない

プロジェクトのインポートは完了したが、LFS オブジェクトをダウンロードまたはクローン作成できない場合は、特殊文字を含むパスワードまたは個人アクセストークンを使用している可能性があります。詳細については、このイシューを参照してください。

プルリクエストが見つかりません

大規模なプロジェクトをインポートすると、大量のメモリを消費するプロセスが起動します。Sidekiqのログに Sidekiq worker RSS out of range のようなメッセージが表示されることがあります。これは、メモリを使いすぎているため、MemoryKillerがRepositoryImportWorker

この問題を解決するには、カスタム環境変数を使用してSIDEKIQ_MEMORY_KILLER_MAX_RSS 環境変数をデフォルトの2000000 値から3000000のような大きな値に一時的に増やします。SIDEKIQ_MEMORY_KILLER_MAX_RSSを増やすことを決定する前に、システムのメモリ制約を考慮してください。