リポジトリ名変更
リダイレクト
GitHub はリポジトリ名を変更した際、古い URL にアクセスしても自動でリダイレクトしてくれます。親切ですね!
リポジトリの名前を変更すると、プロジェクトサイトの URL を除くすべての既存の情報は、下記を含む新しい名前に自動的にリダイレクトされます。
- issue
- Wiki
- Star
- フォロワー
やりかた
リポジトリ名の変更は GitHub の該当リポジトリにアクセスし Settings
> General
> Repository name
より変更できます。リダイレクトの設定は不要です。
注意点
Web トラフィックのリダイレクトに加えて、以前の場所を対象とするすべての
git clone
、git fetch
、git push
操作は、新しい場所で行われたかのように機能し続けます。 ただし、混乱を低減するため、既存のローカルクローンが新しいリポジトリ URL を指すよう更新することを強く推奨します。
上記に記載がない事項として、変更前の名前と同じリポジトリができた場合はリダイレクトされなくなります。何度もリネームした場合、リダイレクトがすべて保証されるかは記載がありません。リダイレクトされるからといって放置せず参照箇所の修正をおすすめします。
リポジトリ名変更に伴う失敗談
CI が動かない
ある日プルリクエストを作成したところ、AWS Codebuild を利用して terraform
コマンドの結果を GitHub へコメントする CI が動かなくなっていました。GitHub の Settings
> Webhooks
> Edit
> Recent Deliveries
を確認すると、HTTP 400 で以下エラーが出力されていました。
Invalid Webhook request received: Invalid source repository specified
原因
どうやら CodeBuild は設定したリポジトリ名と Webhook のリクエストを比較して、ソースが一致するか確認をしているようです。マネジメントコンソールからソースに指定しているリポジトリを修正することで解決しました。当時の私はリポジトリ名を変更したことを失念しており、設定変更はしていないのに何故?と悩んでいました。
学び
リポジトリ名を変更する際には以下に気をつけるべきです。
- リポジトリ名の変更はリスクのある操作だと認識する
- CI を実装している場合、正常系が動作するか確認する
- ファイルや設定に旧リポジトリ名が埋め込まれていないか確認する
所感
リダイレクトにより git clone
が可能であったために切り分けに時間がかかり、復旧後に CI が正常に動作することで設定ファイルの修正漏れに気づかないという経験をしました。リダイレクトしてくれるから大丈夫!ではなく、あくまで影響を少なくするガード機能だと捉えるべきです。以降は慎重な命名を、名前を変更する際は影響範囲を考えるよう習慣づけたいです。