rvmで指定したバージョンに対応したSVNリポジトリからとってくるようにした(未完)

twitterで"rvm で 1.8.7-head を使おうとすると ruby1.9.2 がインストールされるのは正常なのか…?"というつぶやきを見たので、気になってソースをこねていた一日でした。以前より、バージョン指定のあやしさには定評(1.9.1 --head が 1.9.2 --headと等しい)がありましたからねぇ。

で、だいたい見た感じだと、

  1. headつけると無条件でhttp://svn.ruby-lang.org/repos/ruby/trunk/を見るようになっている
  2. マイナーバージョンを指定しないと以下のようなバージョン指定としてみなしている
    1. 1.8だと1.8.6
    2. 1.9だと1.9.1

1については、たしかにそうなのかもしれないんだけど、わざわざバージョン指定しているんだから、そのバージョンを見るのが正しいのではないのかと。あと2に関しては、SVNリポジトリには1.8については、1_8というブランチがあるし、1.9についてはtrunkを見たほうがいいと思う。

ということで、できる範囲で修正してみました。
http://github.com/takkanm/rvm
パッチとしては、こんなもん。なんかインデントずれずれだけど
http://gist.github.com/285128

とりあえず、svn coしてインストールできるところぐらいまでは確認しています。
これをいれると指定したバージョンによってい以下のようにSVNのブランチを見るようになります。

major version minor version branch
9 2 1_9
9 1 1_9_1
9 1_9
8 8 1_8
8 N 1_8_N
8 1_8

あとは、これを報告すればいいのかな。

この修正をやって気づいた他に修正したほうがいいと思ったのは以下。

  • rev指定ができるんだけど、--headがついてないと、そもそもSVNからとってこない
    • gitをつかっているからか、--head --revというのは、headなのかrevなのかわからなくてちょっと気持ちが悪い。
  • revとheadを指定しても、revが無視されているっぽい
    • headが有効になっている

これを修正するには、今日は短すぎた。

あと、いろいろ見ていておもしろかったのが、使用するreadlineをrvmで管理できるみたい。rvm install readlineとかあった。自分の環境だと、うまく動かなかったけど。