どんなとき?
- アカウント名の大文字小文字しか変更しない場合
- 元のアカウント名に戻す場合
事の次第
私は普段「aiandrox」というアカウント名を使っています。
ただ、GitHubは「Aiandrox」というアカウント名でした。それがちょっと気になったので統一したいと思い、「aiandrox」に変更できないのかと思ったところ、アカウント名の変更はできるようでした。
ユーザ名は、現在使われていない別のユーザ名に変更できます。希望するユーザ名が使えない場合、そのユーザ名を入力したときに、ユーザ名のリリースをリクエストできるかについての情報が表示されます。
(中略)
ユーザ名を変更すると、変更前のユーザ名は誰でも取得できるようになります。 古いユーザ名の下にあるリポジトリへの参照のほとんどが、自動で新しいユーザ名に変わります。 ただし、プロフィールへのリンクによっては、自動的にリダイレクトされません。
GitHub ユーザ名の変更
が、大文字と小文字は同じと判断されるようで、直接変更することができませんでした。
なので、一旦「aiandroxA」という名前にした後に変えようとしたところ、以下のようなエラーが出て、元に戻せなくなってしまいました。
Username change was not successful. The repository name aiandrox/hashlog has been retired and cannot be reused.
hashlogというのはリポジトリの名前です。
公式に問い合わせてみた
経緯を説明して、「リポジトリ名を変更せずに、アカウント名を『aiandrox』に変更したい」ということを伝えました。
翻訳はDeepLにお世話になりました。英語としておかしなところはあったかもしれませんが、伝わればいいでしょう。
そして一週間後、返信が来ました。
要約すると、
- これは人気なリポジトリのなりすましを防ぐ制限によるもの。
- でも、実際のリポジトリはあなたのものなので意図した目的を果たしていない。
- 一旦そのリポジトリ名を変更した後にアカウント名を戻せば大丈夫。
- その後、連絡をしてくれれば名前空間の制限を解除する。
例えば、有名なライブラリhoge
があったとして、その作成者foo
が名前を変更した場合、foo/hoge
という名前空間(ここではURL)が空くわけです。
ここで、悪意のある第三者がユーザー名をfoo
にして、hoge
というリポジトリを作成すると、foo/hoge
で好きなソースを公開できます。
そして、他の人は(URLが同じなので)安全なライブラリだと信じてcloneしてしまうかもしれません。
そういうことを防止するための機能らしいです。
人気の基準が今一つわかりませんが、スターが2つ付いていたので、多分そのせいかと思います。
ということで、「hashlog」というリポジトリの名前を「hashlogA」にすると、アカウント名を「aiandrox」に変更することができました!
そして、再び公式に連絡をして制限を解除してもらったのでリポジトリ名も元に戻すことができました。
どうすればよかったのか
最初からこのようなことが起こらないようにするためには、
- 制限がかかる可能性のあるリポジトリを仮の名前(hashlogAなど)に変更
- アカウント名を仮の名前(aiandroxAなど)に変更
- アカウント名を変えたいものに戻す(aiandrox)
- リポジトリ名を元に戻す(hashlog)
という順序で、名前を避難させる前にリポジトリ名も変えてaiandrox/hashlog
の場所を空けておくことが必要です。
また、もし制限によって戻すことができなくなった場合は、自分ではどうしようもないので公式にお願いをするということになるようです。