# リポジトリを Azure DevOps から GitHub に移行する

試用版の実行を実行し、リポジトリを Azure DevOps から GitHub に移行します。

## 前提条件

* このガイドの前のすべてのフェーズを完了している必要があります。
* 移行されるデータと、Importer の既知のサポート制限事項を理解していることを確認します。 詳細については、 [AUTOTITLE を](/ja/migrations/ado/understand-migrations-from-azure-devops-to-github)参照してください。
* 必須ではありませんが、運用環境の移行の間は作業を停止することをお勧めします。 Importer は差分移行をサポートしていないため、移行中に発生した変更は移行されません。 運用環境の移行の間に作業を停止しない場合は、これらの変更を手動で移行する必要があります。

## 移行スクリプトを生成する

複数のリポジトリを GitHub Enterprise Cloud に一度に移行したい場合は、GitHub CLI を使って移行スクリプトを生成します。 結果のスクリプトには、リポジトリごとに 1 つの移行コマンドのリストが含まれます。

> \[!NOTE]
> スクリプトを生成すると、PowerShell スクリプトが出力されます。 ターミナルを使っている場合は、`.ps1` ファイル拡張子を持つスクリプトを出力し、[Mac](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.2) または [Linux](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux?view=powershell-7.2) 用の PowerShell をインストールして実行する必要があります。

移行スクリプトを生成するには、`gh ado2gh generate-script` コマンドを実行します。

```shell copy
gh ado2gh generate-script --ado-org SOURCE --github-org DESTINATION --output FILENAME
```

上のコマンドのプレースホルダーを次の値に置き換えます。

| プレースホルダー    | 値                                                                                                                                                                                                                                                                                                                                                                              |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| SOURCE      | 移行元の Organization の名前                                                                                                                                                                                                                                                                                                                                                          |
| DESTINATION | 移行先の Organization の名前                                                                                                                                                                                                                                                                                                                                                          |
| FILENAME    | 結果の移行スクリプトのファイル名<br><br>ターミナルを使っている場合は、生成されたスクリプトの実行に PowerShell が必要なので、`.ps1` ファイル拡張子を使います。 [Mac](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.2) 用または [Linux](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux?view=powershell-7.2) 用の PowerShell をインストールできます。 |

### 追加の引数

| 引数                                | 説明                                                                                                                                                                                                                                                                                                                                         |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--target-api-url TARGET-API-URL` | GHE.com に移行する場合は、`--target-api-url TARGET-API-URL` を追加します。TARGET-API-URL は Enterprise のサブドメインのベース API URL です。 (例: `https://api.octocorp.ghe.com`)。                                                                                                                                                                                         |
| `--all`                           | パイプラインの再配線、チームの作成、Azure Boards統合の構成など、スクリプトに追加の機能を追加します。                                                                                                                                                                                                                                                                                   |
| `--download-migration-logs`       | 移行された各リポジトリの移行ログをダウンロードします。 移行ログの詳細については、「[GitHub Enterprise Importer の移行ログへのアクセス](/ja/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/accessing-your-migration-logs-for-github-enterprise-importer#downloading-all-the-repository-migration-logs-for-a-migration-script)」を参照してください。 |

## 移行スクリプトの確認

スクリプトを生成したら、ファイルを確認し、必要に応じてスクリプトを編集します。

* 移行したくないリポジトリがある場合は、対応する行を削除するかコメントにします。
* 移行先の Organization でリポジトリに別の名前を使う場合は、対応する `--target-repo` フラグの値を更新します。
* 新しいリポジトリの可視性を変更する場合は、対応する `--target-repo-visibility` フラグの値を更新します。 既定では、スクリプトはソース リポジトリと同じ表示範囲を設定します。

## 試運転を行う

企業固有の問題を明らかにするために、移行の試用を実行することを強くお勧めします。 試用版の実行では、次の内容について学習します。

* 特定のリポジトリの移行が正常に完了できるかどうか。
* 移行されたリポジトリを実行可能な状態に戻すことができるかどうか。
* 移行の実行にかかる時間。

試用版の実行はいつでも実行でき、移行中に作業を停止する必要はありません。 試験的移行の完了にかかる時間を短縮するには、試験的実行のバッチを連続してスケジュールできます。 それらのリポジトリのユーザーは、都合のよいときに結果を検証できます。

1. 試用版の移行のテスト用 Organization を作成します。

   すべての試験的実行に 1 つの Organization を使うことも、目的の移行先 Organization ごとに 1 つのテスト Organization を作成することもできます。 Organization が移行検証のみを目的としており、運用環境向けではないことを明確にするために、Organization 名の末尾に `-sandbox` を含めることを検討してください。 終わったら、テスト Organization を削除してかまいません。

2. 試験的移行を実行します。

3. [フォローアップ タスク](/ja/migrations/ado/follow-up-tasks) でフォローアップ タスクを完了できることを確認します。

4. 移行の結果を検証するようにユーザーに依頼します。

5. 試験的移行によって明らかになった問題を解決します。

6. 必要に応じて、テスト用の Organization を削除します。

## リポジトリを移行する

試用の実行が成功し、フォローアップ タスクを完了できた場合は、実際の移行に進むことができます。

> \[!WARNING] 移行するリポジトリの作業は停止することをお勧めします。 移行中または移行後に行われた変更は、手動で移行する必要があります。

複数のリポジトリを移行するには、生成したスクリプトを実行します。 次のコマンドの FILENAME を、スクリプトの生成時に指定したファイル名に置き換えます。

* ターミナルを使っている場合は、`./` を使います。

  ```shell copy
  ./FILENAME
  ```

* PowerShell を使っている場合は、`.\` を使います。

  ```shell copy
  .\FILENAME
  ```