Bitbucket Serverからプロジェクトをインポートします。
GitLab 11.2で導入されました。
Bitbucket Serverからはインポートできます:
- リポジトリの説明
- Git リポジトリのデータ
- プルリクエスト
- プルリクエストコメント
インポートの際、リポジトリの公開は保持されます。Bitbucket でリポジトリが非公開の場合、GitLab でも非公開として作成されます。
Bitbucket リポジトリのインポート
Bitbucket リポジトリを GitLab にインポートできます。
前提条件
GitLab16.0で導入され、GitLab15.11.1とGitLab15.10.5にバックポートされたDeveloperロールの代わりにMaintainerロールの要件。
- Bitbucket Serverのインポートソースが有効になっている必要があります。有効になっていない場合は、GitLab管理者に有効にしてもらうよう依頼してください。Bitbucket Serverのインポートソースは、GitLab.comではデフォルトで有効になっています。
- インポート先のグループで、少なくともメンテナーのロールがあること。
リポジトリのインポート
Bitbucketリポジトリをインポートします:
- GitLab にサインインします。
- 左サイドバーの上部にある「新規作成({plus})」と「新規プロジェクト/リポジトリ」を選択します。
- プロジェクトのインポートを選択します。
- Bitbucket Serverを選択します。
- Bitbucketにログインし、BitbucketアカウントへのGitLabアクセスを許可します。
- インポートするプロジェクトを選択するか、全てのプロジェクトをインポートします。プロジェクトを名前でフィルタリングし、各プロジェクトをインポートするネームスペースを選択できます。
- プロジェクトをインポートします:
- 初めてプロジェクトをインポートする場合インポートを選択します。
- もう一度再インポートを選択します。新しい名前を指定し、再度インポートを選択します。再インポートすると、ソースプロジェクトの新しいコピーが作成されます。
インポートされない項目
以下の項目はインポートされません:
- プルリクエストの承認者
- Markdownでの添付ファイル
- タスクリスト
- 絵文字リアクション
インポートされたアイテムが変更されました。
以下の項目はインポート時に変更されます:
- GitLab は任意のコード行へのコメントを許可しません。Bitbucket の範囲外のコメントはマージリクエストのコメントとして挿入されます。
- 複数のスレッドレベルはひとつのスレッドにまとめられ、引用符は元のコメントの一部として追加されます。
- 辞退されたプルリクエストには到達できないコミットがあります。これらのプルリクエストは空の変更として表示されます。
- プロジェクトのフィルタリングはあいまい検索をサポートしていません。で始まる文字列か完全一致の文字列のみがサポートされます。
ユーザー割り当て
前提条件
- 管理者権限のある認証トークン。
イシューやプルリクエストをインポートする際、インポーターは GitLab ユーザーデータベースで確認された作成者のメールアドレスを見つけようとします。そのようなユーザーがいない場合、プロジェクト作成者が作成者として設定されます。インポーターはコメントにオリジナルの作成者を示すメモを追加します。
インポーターは、新しい名前空間(グループ)が存在しない場合はそれを作成します。名前空間が取られている場合、リポジトリはインポート処理を開始したユーザーの名前空間でインポートします。
インポーターは、GitLabユーザーデータベースのメールアドレスからレビュアーを見つけようとします。GitLab に存在しない場合、マージリクエストにレビュアーとして追加することはできません。
ユーザー名によるユーザー割り当て
フラグ: セルフマネジメントのGitLabとGitLab.comでは、デフォルトではこの機能は利用できません。利用可能にするには、管理者がbitbucket_server_user_mapping_by_username
という機能フラグを有効にします。この機能は、本番環境での使用には適していません。
この機能を有効にすると、インポーターはGitLabユーザーデータベースから作成者のユーザーを見つけようとします:
username
slug
displayName
これらのプロパティに一致するユーザーがいない場合は、プロジェクト作成者が作成者として設定されます。
トラブルシューティング
全般
GUIベースのインポートツールでうまくいかない場合は、次の方法を試してみてください:
- GitLab Import APIBitbucket Serverエンドポイントを使用します。
- リポジトリのミラーリングを設定します。冗長なエラー出力を提供します。
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
を増やすことを決定する前に、システムのメモリ制約を考慮してください。