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