Born Too Late

Yuya's old tech blog.

GitHub で旧リポジトリから新リポジトリにリダイレクトさせる

2014-07-05 15:44:23

TL;DR

GitHub ではリポジトリを Transfer ownership すると、旧リポジトリへのアクセス時に新リポジトリにリダイレクトするようになる。

GitHub リポジトリにアクセスするとリダイレクトすることがある

気づいてる人も多いと思うんですけど、たまにあるんです。

https://github.com/defunkt/hub -> https://github.com/github/hub
https://github.com/lestrrat/peco -> https://github.com/peco/peco

yuya-takeyama/woothee-php も woothee/woothee-php にリダイレクトさせたいと思って、リポジトリの Setting を探してもそれらしき設定はなし。
代わりに、yuya-takeyama/woothee-php に moved ブランチを作って、README.md に「引っ越しました」的なリンクだけ置いていました。
それも woothee/woothee-php からわざわざ fork した上で。

ところがさっき Twitter で教えてもらった情報によると、そんなことする必要なかったんですね。

@yuya_takeyama Transfer ownershipだったと思う。

— ながしまきょう (@hail2u_) 2014, 7月 5

まぁいま確認したら、Transfer repository するときに、しっかりその旨書かれてるんですが。

[caption id="attachment_2520" align="aligncenter" width="446" caption="Transfer repository するところ"]Transfer repository するところ[/caption]

というわけで、fork して作った yuya-takeyama/woothee-php を削除して、再度アクセスしたところ、見事に woothee/woothee-php にリダイレクトされるようになりました。
めでたしめでたし。
もちろん 301 Moved permanently ですね。

で、試しに git clone https://github.com/yuya-takeyama/woothee-php とかすると、見事に woothee/woothee-php の HEAD が clone されました。
ついでに git remote show origin すると Fetch URL とか Push URL とかは yuya-takeyama/woothee-php になっていて、せっかくだから woothee/woothee-php にしてくれてた方がよかったんですけど、ここは git clone のリダイレクトの扱いの問題ですね。
ちなみに SSH からの git clone でも同様でした。

しかし、これなら Transfer ownership したら Gemfile とかで GitHub からインストールしていた gem がいきなりインストールできなくなった!なんてことは起こらないわけですね。
無意識にやってくれて親切。

あと、リダイレクト先の URL なりリポジトリなりを自分で設定できるような仕様もあり得たとは思うんですけど、まったく関係ないリポジトリとかにリダイレクトさせないようにこういう仕様なんでしょうね。

あわせて読みたい

How to transfer a repository