Bitbucket Cloudから移行する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
プロジェクトをBitbucket CloudからGitLabにインポートします。
Bitbucket Cloudインポーターは、Bitbucket Cloudからアイテムのサブセットをインポートします。
| Bitbucket Cloudのアイテム | インポート済み |
|---|---|
| リポジトリの説明 | |
| Gitリポジトリデータ | |
| イシュー(コメントを含む) | |
| プルリクエスト(コメントを含む) | |
| マイルストーン | |
| Wiki | |
| ラベル | |
| マイルストーン | |
| LFSオブジェクト | |
| プルリクエストの承認 | いいえ |
| 承認ルール | いいえ |
インポーターのワークフロー
Bitbucket Cloudのアイテムがインポートされる場合は、以下のとおりとなります:
- プルリクエストとイシューへの参照は保持されます。
- リポジトリの公開アクセスは保持されます。リポジトリがBitbucket Cloudで非公開の場合、GitLabでは非公開として作成されます。
- インポートされたイシュー、マージリクエスト、コメントには、GitLabでインポート済みバッジが付いています。
イシュー、プルリクエスト、コメントをインポートする場合、Bitbucket Cloudインポーターは次のようになります:
- 作成者/割り当て先のBitbucketのニックネームを使用し、GitLabで同じBitbucket固有識別子を見つけようとします。
- 一致しない場合、またはユーザーがGitLabデータベースに見つからない場合、プロジェクト作成者(通常はインポート処理を開始した現在の認証済みユーザー)を作成者として設定し、元のBitbucket作成者に関するイシューに関する参照を保持します。
プルリクエストの場合、インポーターは次のようになります:
- ソースSHAを使用し、リポジトリに存在しない場合は、ソースコミットをマージコミットSHAに設定しようとします。
- マージリクエストの割り当て先を作成者に設定し、GitLabのBitbucket固有識別子に一致するユーザー名を持つレビュアーを設定します。
- GitLabのマージリクエストを、
opened、closed、またはmergedのいずれかに設定します。
イシューの場合、インポーターは次のようになります:
- Bitbucketのイシューのタイプに対応するラベルを追加します。
bug、enhancement、proposal、またはtaskのいずれかです。 - Bitbucketのイシューが、
resolved、invalid、duplicate、wontfix、またはclosedのいずれかであった場合、GitLabのイシューを閉じます。
Bitbucket Cloudインポーターは、新しいネームスペース(グループ)が存在しない場合に作成します。ネームスペースが使用されている場合、リポジトリはインポートプロセスを開始したユーザーのネームスペースの下にインポートされます。
前提条件
- Bitbucket Cloudのインテグレーションを有効にする必要があります。無効な場合は、GitLab管理者に有効にするように依頼してください。GitLab.comではデフォルトで有効になっています。
- Bitbucket Cloudのインポート元を有効にする必要があります。無効な場合は、GitLab管理者に有効にするように依頼してください。GitLab.comではデフォルトで有効になっています。
- インポート先のグループで、メンテナーまたはオーナーロールが必要です。
- Bitbucketのプルリクエストは、同じソースおよび宛先プロジェクトを持ち、プロジェクトのフォークからのものであってはなりません。そうでない場合、プルリクエストは空のマージリクエストとしてインポートされます。
ユーザーのコントリビュートをマップするには、各ユーザーがプロジェクトのインポートの前に以下を完了する必要があります:
- Bitbucketアカウント設定のユーザー名が、Atlassianアカウント設定の公開名と一致することを確認します。一致しない場合は、Atlassianアカウント設定の公開名を変更して、Bitbucketアカウント設定のユーザー名と一致させます。
- GitLabプロファイルサービスサインインでBitbucketアカウントを接続します。
Bitbucket Cloudアプリパスワードを生成する
アプリケーションパスワードのサポートは、GitLab 18.9で非推奨になり、19.0での削除が予定されています。代わりにユーザーAPIトークンを使用してください。
インポートAPIを使用してBitbucket Cloudリポジトリをインポートする場合は、Bitbucket Cloudアプリパスワードを作成する必要があります。
Bitbucket Cloudアプリパスワードを生成するには、次の手順に従います:
Access Managementセクションで、App passwordsを選択します。
Create app passwordを選択します。
パスワード名を入力します。
少なくとも次の権限を選択します:
Account: Email, Read Projects: Read Repositories: Read Pull Requests: Read Issues: Read Wiki: Read and WriteCreateを選択します。
Bitbucket Cloudリポジトリをインポートする
- 右上隅で、新規作成( )と新規プロジェクト/リポジトリを選択します。
- プロジェクトをインポートを選択します。
- Bitbucket Cloudを選択します。
- Bitbucketにサインインし、アクセス許可を選択して、GitLabがBitbucketアカウントにアクセスできるようにします。
- インポートしたいプロジェクトを選択するか、すべてのプロジェクトをインポートします。名前でプロジェクトをフィルタリングし、各プロジェクトのインポート先のネームスペースを選択できます。
- プロジェクトをインポートするには、以下の手順に従います:
- 初めての場合は、インポートを選択します。
- 2回目以降は、再インポートを選択します。新しい名前を指定し、もう一度再インポートを選択します。再インポートすると、ソースプロジェクトの新しいコピーが作成されます。
トラブルシューティング
これらのセクションには、Bitbucket Cloudからのインポート時に発生する可能性のある問題に対する解決策が含まれています。
インポート処理で誤ったアカウントが使用された
正しいアカウントにサインインしてください。誤ったアカウントでインポート処理を誤って開始した場合は、次の手順に従ってください:
- GitLabのBitbucketアカウントへのアクセスを失効させます。これにより、Bitbucket Cloudリポジトリをインポートしたときの処理を本質的に元に戻されます。
- Bitbucketアカウントからサインアウトし、Bitbucket Cloudリポジトリを再度インポートします。
名前が一致してもユーザーマッピングが失敗する
ユーザーマッピングが機能するため、Bitbucketアカウント設定のユーザー名が、Atlassianアカウント設定の公開名と一致する必要があります。
これらの名前が一致していてもユーザーマッピングが失敗する場合は、ユーザーがGitLabプロファイルサービスサインインでBitbucketアカウントを接続した後で、Bitbucketのユーザー名を変更した可能性があります。
この問題を修正するには、ユーザーはGitLabデータベース内のBitbucket外部固有識別子が現在のBitbucketの公開名と一致することを確認し、不一致がある場合は再接続する必要があります:
- APIを使用して認証済みユーザーを取得します。
- API応答では、
identities属性には、GitLabデータベースに存在するBitbucketアカウントが含まれています。extern_uidが現在のBitbucketの公開名と一致しない場合、ユーザーはGitLabプロファイルサービスサインインでBitbucketアカウントを再接続する必要があります。 - 再接続後、ユーザーはAPIを再度使用して、GitLabデータベース内の
extern_uidが現在のBitbucketの公開名と一致することを確認する必要があります。
プロジェクトをインポートしたユーザーは、インポートされたプロジェクトを削除してから、再度インポートする必要があります。