# ロックされたリポジトリについて

リポジトリは変更を防ぐためにロックできます (多くの場合は移行のため)。

## ロックされたリポジトリについて

GitHub製品との間でリポジトリを移行すると、移行のために配信元リポジトリと移行先リポジトリが "ロック" される可能性があります。 リポジトリがロックされている間は、コミットのプッシュ、issue の作成、pull request のコメントなど、リポジトリを変更することはできません。

移行中にリポジトリがロックされるかどうかは、使用するツールと、移行の実行時に選択するオプションによって異なります。 リポジトリがロックされている場合、 GitHubのリポジトリのページに次のテキストを含むバナーが表示されます。

> このリポジトリは現在移行中です。 移行の進行中は、ロックされます。

サイト管理者は、移行以外の理由でリポジトリをロックすることもできます。

多くの場合、移行が完了すると、リポジトリは自動的にロック解除されます。 それ以外の場合、リポジトリのロック解除は手動による手順となります。リポジトリのロック解除に必要なプロセスは、使用した移行ツールによって異なります。

## GitHub Enterprise Importer によってロックされるリポジトリ

移行の進行中、移行先リポジトリへのアクセスは GitHub Enterprise Importerによってロックされます。 移行が正常に完了すると、リポジトリのロックは自動的に解除されます。 ただし、移行の失敗など、移行に問題がある場合は、リポジトリがロックされたままになる可能性があります。

GitHub Enterprise Importer では、ソース リポジトリは既定ではロックされません。 ソース リポジトリは、`--lock-source-repo`で GitHub CLI オプションを指定した場合、または `lockSource` GraphQL の変更で`startRepositoryMigration`属性を指定した場合にのみロックされます。

> \[!NOTE]
> 移行元のリポジトリをロックすることは、後でロック解除しないことが確実でない限り、お勧めしません。 代わりに、リポジトリをアーカイブすることを検討してください。 詳しくは、「[リポジトリのアーカイブ](/ja/enterprise-server@3.22/repositories/archiving-a-github-repository/archiving-repositories)」をご覧ください。

GitHub Enterprise Importerによってロックされていたリポジトリのロックを解除する方法については、[GitHub Enterprise Importer を使用した移行のトラブルシューティング](/ja/enterprise-server@3.22/migrations/troubleshooting/troubleshooting-your-migration-with-github-enterprise-importer#locked-repositories) を参照してください。

## Enterprise Live Migrations によってアーカイブされたリポジトリ

最新の GitHub Enterprise Server リリースでは、Enterprise Live Migrations はソース リポジトリをロックするのではなく、アーカイブします。 これにより、リポジトリを読み取り操作に使用できます。

ソース リポジトリのアーカイブ後にカットオーバーが失敗した場合、 ELM サービスはリポジトリのアーカイブ解除を試みます。 これが失敗した場合、リポジトリ管理者はリポジトリのアーカイブを解除できます。 「[リポジトリのアーカイブ](/ja/enterprise-server@3.22/repositories/archiving-a-github-repository/archiving-repositories#unarchiving-a-repository)」を参照してください。

リポジトリのアーカイブを解除すると、リポジトリ内のすべての問題と pull request が Elasticsearch でインデックスが再作成されるため、インスタンスに追加の負荷が発生することに注意してください。

ソース リポジトリのアーカイブが解除されたら、 `elm migration cutover-to-destination --migration-id MIGRATION-ID`を使用してカットオーバーを再試行するか、 `elm migration cancel --migration-id MIGRATION-ID` を使用して移行を中止し、準備ができたら新しい移行を開始できます。

## "Organization migrations" REST API によってロックされるリポジトリ

[\[Start an organization migration\]](/ja/enterprise-server@3.22/rest/migrations/orgs#start-an-organization-migration) エンドポイントを呼び出して、移行元のリポジトリの移行アーカイブを生成すると、リポジトリは既定でロックされません。 リポジトリは、`lock_repositories` パラメーターを `true` に設定した場合のみロックされます。

このエンドポイントを使用してリポジトリをロックした場合、[\[Unlock an organization repository\]](/ja/enterprise-server@3.22/rest/migrations/orgs#unlock-an-organization-repository) エンドポイントを使用してリポジトリのロックを解除できます。

リポジトリが GitHub Enterprise Serverに保存されている場合、サイト管理者はサイト管理者ダッシュボードを使用してリポジトリのロックを解除することもできます。 詳細については、 [リポジトリのロック](/ja/enterprise-server@3.22/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/locking-a-repository) を参照してください。

## `ghe-migrator` によってロックされるリポジトリ

`ghe-migrator`を使用すると、GitHub Enterprise Serverの宛先リポジトリは既定でロックされ、自動的にロック解除されません。

インポートが正常に完了したら、`ghe-migrator unlock` コマンドを使用してリポジトリのロックを解除できます。 詳しくは、「[GitHub Enterprise Server へのデータの移行](/ja/enterprise-server@3.22/migrations/using-ghe-migrator/migrating-data-to-github-enterprise-server#unlocking-repositories-on-the-target-instance)」をご覧ください。

インポートが失敗した場合、必ずしもすべてのデータが移行されたとは限らないので、データ損失を防ぐために、リポジトリを削除し、移行を再試行することをお勧めします。

リポジトリを使用する必要がある場合、サイト管理者は、サイト管理者ダッシュボードを使用してリポジトリのロックを解除できます。 詳細については、 [リポジトリのロック](/ja/enterprise-server@3.22/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/locking-a-repository) を参照してください。

移行元のリポジトリは既定でロックされません。`--lock` コマンドを使用してリポジトリのエクスポートの準備を行うときに `ghe-migrator add` 引数を指定した場合のみロックされます。 リポジトリのロックを解除するには、`ghe-migrator unlock` コマンドを使用します。 詳しくは、「[GitHub Enterprise Server へのデータの移行](/ja/enterprise-server@3.22/migrations/using-ghe-migrator/migrating-data-to-github-enterprise-server#unlocking-repositories-on-the-source)」をご覧ください。

## `startImport` GraphQL ミューテーションによってロックされるリポジトリ

`startImport` GraphQL ミューテーションを使用する場合、移行先のリポジトリはロックされますが、ロック解除は自動的に行われません。

インポートが正常に完了したら、`unlockImportedRepositories` GraphQL ミューテーションを使用してリポジトリのロックを解除できます。 ドキュメントについては、Expert Servicesの担当者またはパートナーの担当者にGitHub 問い合わせてください。

インポートに失敗した場合、リポジトリのロックを自分で解除することはできません。 移行が失敗した場合、必ずしもすべてのデータが移行されたとは限らないので、データ損失を防ぐために、リポジトリを削除し、移行を再試行することをお勧めします。

リポジトリのロックを解除する必要がある場合は、 サイト管理者にお問い合わせください。