Amazon Web Services ブログ

AWS CodeCommit リポジトリを他の Git プロバイダーに移行する方法

お客様は、リポジトリのクローニング、ミラーリング、または特定のブランチの移行など、さまざまな方法を使用して AWS CodeCommit の リポジトリを他の Git プロバイダーに移行できます。このブログでは、リポジトリを一般的なプロバイダーにミラーリングする基本的なユースケースについて説明し、より具体的なプロバイダーにミラーリングする手順へのリンクを提示します。 リポジトリの種類や複雑さ、および移行対象と方法の決定によって、実際の手順は異なる可能性があります。このブログでは、Git リポジトリデータの移行方法のみを説明しており、プルリクエストなど、CodeCommit からの他のデータのエクスポートについては説明していません。

前提条件

  1. CodeCommit リポジトリを別のプロバイダーに移行する前に、AWS Management Console と移行先のプロバイダーのアカウントの両方に必要な認証情報とアクセス許可があることを確認してください。GitHub や Gitlab に移行する場合は、Git 認証情報を使用した HTTPS ユーザーのセットアップで説明されているように、CodeCommit の静的認証情報(訳註:静的認証情報とはこちらに記載のある Git 認証情報用のユーザ名とパスワードのことです)を使用します。以下で説明する一般的な移行オプションのプロセスを選択する場合は、CodeCommit の任意の種類の認証情報を使用できます。AWS CodeCommit のアクセス制御のセットアップの詳細については、AWS CodeCommit のセットアップをご覧ください。
  2. AWS CodeCommit コンソールで、移行するリポジトリのクローン URL を選択します。正しいクローン URL(HTTPS、SSH、または HTTPS(CRC)) は、使用する認証情報の種類とネットワークプロトコルによって異なります。

図 1: リポジトリのクローン

AWS CodeCommit リポジトリを GitLab リポジトリに移行する

CodeCommit のクローン URL と HTTPS Git リポジトリの認証情報を組み合わせて利用して、URL によるリポジトリからソースコードをインポートするための GitLab ドキュメントのガイダンスに従ってください。

AWS CodeCommit リポジトリを GitHub リポジトリに移行する

CodeCommit のクローン URL と HTTPS Git リポジトリの認証情報を利用して、ソースコードをインポートするための GitHub のドキュメントのガイダンスに従って ください。

他のリポジトリプロバイダへの一般的な移行方法

1.    AWS CodeCommit リポジトリをクローンする

Git を使用して、AWS CodeCommit からローカルマシンにリポジトリをクローンします。HTTPS を使用する場合は、次のコマンドを実行できます:

git clone --mirror https://your-aws-repository-url your-aws-repository

your-aws-repository-url を AWS CodeCommit リポジトリの URL に置き換えます。
your-aws-repository をこのリポジトリの名前に置き換えます。例 :

git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

2.    新しいリモートリポジトリを設定する

クローンした AWS CodeCommit リポジトリのディレクトリに移動します。次に、新しいリポジトリプロバイダのリポジトリ URL をリモートとして追加します :

git remote add <provider name> <provider-repository-url>

<provider name> を任意のプロバイダ名に置き換えます ( 例 : gitlab)

<provider-repository-url> を新しいリポジトリプロバイダのリポジトリ URL に置き換えます。

3.    ローカルリポジトリを新しいリモートリポジトリにプッシュする

これにより、すべてのブランチとタグが新しいリポジトリプロバイダのリポジトリにプッシュされます。プロバイダ名は、ステップ 2 のプロバイダ名と一致している必要があります。

git push <provider name> --mirror

注意事項:

  • リモートリポジトリは空である必要があります。
  • リモートリポジトリには、force push を許可しない保護されたブランチがある可能性があります。この場合、新しいリポジトリプロバイダに移動し、ブランチ保護を無効にして force push を許可します。

4.    移行を確認する

プッシュが完了したら、すべてのファイル、ブランチ、タグが新しいリポジトリプロバイダに正常に移行されたことを確認します。これは、オンラインでリポジトリを参照するか、別の場所にクローンしてローカルで確認することができます。

5.    リモート URL を更新する

移行したリポジトリをローカルで引き続き使用する予定の場合は、リモート URL を更新して、AWS CodeCommit ではなく新しいプロバイダのリポジトリを指すようにすることをお勧めします。次のコマンドを使用してこれを行うことができます:

git remote set-url origin <provider-repository-url>

<provider-repository-url> を新しいリポジトリプロバイダのリポジトリ URL に置き換えます。

6.    CI/CD パイプラインと保護されたブランチを修正する

GitLab、GitHub、AWS CodePipeline など、リポジトリと相互作用する CI/CD パイプラインが設定されている場合は、新しいリポジトリ URL を反映するように構成を更新します。ステップ 3 で保護されたブランチの許可を削除した場合は、メインブランチにこれらを再度追加することをお勧めします。

7.    チームに通知する

他の人が作業しているリポジトリを移行する場合は、移行について通知し、新しいリポジトリ URL を提供してください。

8.    移行済みの AWS CodeCommit リポジトリを削除する

この操作は元に戻せません。AWS CodeCommit コンソールに戻り、“リポジトリの削除” ボタンを使用して移行したリポジトリを削除します。

図 2: リポジトリの削除

結論

このブログでは、既存の AWS CodeCommit リポジトリを別の Git プロバイダーに移行する方法をいくつか説明しました。移行後も現在の AWS CodeCommit リポジトリを引き続き使用することができますが、その場合は AWS CodeCommit と新しいリポジトリプロバイダー間で定期的な同期操作が必要になる可能性があります。リポジトリの移行に関する詳細については、以下のリソースを参照してください。

リポジトリを段階的に移行する – このガイドは、リポジトリを CodeCommit に段階的に移行することを目的として書かれていますが、他の Git プロバイダーにも使用できます。

本記事はソリューションアーキテクト松本が翻訳しました。原文はこちらです。