Bitbucket Serverからプロジェクトをインポートする
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
プロジェクトをBitbucket ServerからGitLabにインポートします。
インポート期間を見積もる
すべてのBitbucketサーバーからのインポートは異なり、実行するインポートの期間に影響します。ただし、インポートにかかる時間を見積もるために、以下のデータで構成されるプロジェクトの場合、インポートに8時間かかる可能性があります:
- 13,000件のプルリクエスト
- 10,00個のブランチ
- 7,000個のタグ
- 500 GiBリポジトリ
前提要件
- Bitbucket Serverのインポート元を有効にする必要があります。有効になっていない場合は、GitLabの管理者に有効にするように依頼してください。Bitbucket Serverのインポート元は、GitLab.comでデフォルトで有効になっています。
- インポート先のGitLabグループに対する少なくともメンテナーロール。
- 管理者権限を持つBitbucket Serverの認証トークン。管理者アクセス権がないと、一部のデータはインポートされません。
リポジトリのインポート
Bitbucketのリポジトリをインポートするには、次の手順に従います:
- GitLabにサインインします。
- 左側のサイドバーの上部にある新規作成( )と新規プロジェクト/リポジトリを選択します。
- プロジェクトのインポートを選択します。
- Bitbucketサーバーを選択します。
- Bitbucketにサインインし、GitLabにBitbucketアカウントへのアクセスを許可します。
- インポートするプロジェクトを選択するか、すべてのプロジェクトをインポートします。プロジェクトを名前でフィルタリングし、各プロジェクトをインポートするネームスペースを選択できます。
- プロジェクトをインポートするには:
- 初回: インポートを選択します。
- 再度: 再インポートを選択します。新しい名前を指定し、もう一度再インポートを選択します。再インポートすると、ソースプロジェクトの新しいコピーが作成されます。再インポートすると、ソースプロジェクトの新しいコピーが作成されます。
インポートされるアイテム
- リポジトリの説明
- Gitリポジトリデータ
- コミット、ユーザーメンション、レビュアー、およびマージイベントを含むプルリクエスト
- LFSオブジェクト
インポート時:
- リポジトリの公開アクセスは保持されます。リポジトリがBitbucketで非公開の場合、GitLabでも非公開として作成されます。
- インポートされたマージリクエストとコメントには、GitLabにインポート済みバッジが付いています。
クローズまたはマージされたプルリクエストがインポートされると、リポジトリに存在しないコミットSHAがBitbucketサーバーからフェッチされ、プルリクエストにコミットが関連付けられていることが確認されます:
- ソースコミットSHAは、
refs/merge-requests/<iid>/head形式の参照とともに保存されます。 - ターゲットコミットSHAは、
refs/keep-around/<SHA>形式の参照とともに保存されます。
ソースコミットがリポジトリに存在しない場合、コミットメッセージにSHAを含むコミットが代わりに使用されます。
インポートされないアイテム
以下のアイテムはインポートされません:
- Markdownの添付ファイル
- タスクリスト
- 絵文字リアクション
- プルリクエストの承認
- プルリクエストの承認ルール
インポートされるが変更されるアイテム
以下のアイテムは、インポート時に変更されます:
- GitLabでは、任意のコード行にコメントを追加することはできません。範囲外のBitbucketのコメントは、マージリクエストにコメントとして挿入されます。
- 複数のスレッドレベルが1つのスレッドに折りたたまれ、引用符が元のコメントの一部として追加されます。
- プロジェクトのフィルタリングでは、あいまい検索はサポートされていません。starts with(先頭が一致する)文字列またはfull match(完全一致)文字列のみがサポートされています。
ユーザーコントリビューションとメンバーシップのマッピング
Bitbucketサーバーインポーターは、GitLab.comおよびGitLab Self-Managed向けのユーザーコントリビュートのマッピングの改善されたメソッドを使用します。
古いユーザーコントリビューションマッピングメソッド
GitLab Self-ManagedおよびGitLab Dedicatedインスタンスへのインポートには、ユーザーコントリビューションマッピングの古いメソッドを使用できます。このメソッドを使用するには、bitbucket_server_user_mappingを無効にする必要があります。GitLab.comへのインポートでは、代わりに改善されたメソッドを使用する必要があります。
古いメソッドを使用すると、インポーターはBitbucket ServerユーザーのメールアドレスとGitLabユーザーデータベース内の確認済みのメールアドレスを照合しようとします。そのようなユーザーが見つからない場合:
- 代わりにプロジェクト作成者が使用されます。インポーターは、元の作成者をマークするために、コメントにメモを追加します。
- プルリクエストのレビュアーの場合、レビュアーは割り当てられません。
- プルリクエストの承認者の場合、承認は追加されません。
@mentionsプルリクエストの説明とメモのメールアドレスを使用して、Bitbucket Serverのユーザープロファイルと一致します。同じメールアドレスを持つユーザーがGitLabで見つからない場合、@mentionは静的になります。ユーザーを一致させるには、プロジェクトへの読み取りアクセス権を少なくとも提供するGitLabロールが必要です。
プロジェクトが公開されている場合、GitLabはプロジェクトに招待されたユーザーのみを照合します。
インポーターは、新しいネームスペース (グループ) が存在しない場合に作成します。ネームスペースが使用されている場合、リポジトリは、インポートプロセスを開始したユーザーのネームスペースの下にインポートされます。
トラブルシューティング
一般
GUIベースのインポートツールが機能しない場合は、以下を試すことができます:
- GitLab Import API Bitbucket Serverエンドポイントを使用します。
- リポジトリのミラーリングを設定します。詳細なエラー出力が提供されます。
Bitbucket Cloudのトラブルシューティングセクションを参照してください。
LFSオブジェクトはインポートされません
プロジェクトのインポートが完了してもLFSオブジェクトをダウンロードまたはクローンできない場合は、特殊文字を含むパスワードまたはパーソナルアクセストークンを使用している可能性があります。詳しくは、このイシューをご覧ください。
無効/未解決のホストアドレスが原因でインポートが失敗するか、インポートURLがブロックされます
Bitbucketサーバーへの初期接続が成功したにもかかわらず、Importing the project failed: Import URL is blockedのようなエラーメッセージでプロジェクトのインポートが失敗した場合、Bitbucketサーバーまたはリバースプロキシが正しく構成されていない可能性があります。
この問題を解決するには、Projects APIを使用して、新しく作成されたプロジェクトを確認し、プロジェクトのimport_url値を見つけます。
この値は、インポートに使用するためにBitbucketサーバーによって提供されるURLを示します。このURLが公開的に解決できない場合、解決できないアドレスエラーが発生する可能性があります。
この問題を解決するには、プロキシサーバーがBitbucketでのURLの構築方法と使用方法に影響を与える可能性があるため、Bitbucketサーバーがすべてのプロキシサーバーを認識していることを確認してください。詳細については、プロキシとセキュアなBitbucketを参照してください。