git-svnを途中から始める

普通にgit-svnをやろうとすると、活発なプロジェクトだと既に数千以上の履歴があったりなんかして、全部フェッチするのにアホみたいに時間がかかります。あときっとsvnのホストも、負荷がデカくて涙目だと思います。

それで、githubあたりからgit-svn済みのgitリポジトリを入手して続きをやりたくなるんですが(gitだとかなりの履歴があってもすんなり取得できる)、このやり方はgit-svnのmanページのBASIC EXAMPLESに載ってます、がしかし、どうもうまく出来ないので、よくわからないけど出来るようにするやり方。rubygemsでやってみました。

githubで"rubygems"で検索したら、unofficial mirrorが見つかりました。感謝しつつクローンします。

$ git clone git://github.com/vvs/rubygems.git
$ cd rubygems

次にSubversionの方をセットアップ。

$ git svn init --stdlayout http://rubygems.rubyforge.org/svn

できるかな?

$ git svn rebase
Unable to determine upstream SVN information from working tree history

怒られました。

かなり無理矢理かも…remotes/trunkをmasterと同じにしてしまいます。

$ cat .git/refs/heads/master > .git/refs/remotes/trunk
$ git svn rebase
Rebuilding .git/svn/trunk/.rev_map.3d4018f9-ac1a-0410-99e9-8a154d859a19 ...
r1 = 440e25888865db15deaa4e587f7e813fa4fb688a
r2 = f86b2ee282a3f0017324a64e5657a485570fe25a
r3 = fe49b4371490cac86dff87f05a94fa52b7da7748
 略
r2289 = af62a2a1bcca671c9135a324178f9921f2cae4cc
r2290 = 1c33fbedd5743043141547cf4b56d8eb4c88ae23
Done rebuilding .git/svn/trunk/.rev_map.3d4018f9-ac1a-0410-99e9-8a154d859a19
Current branch master is up to date.

できたー!

$ git branch -av
* master                1c33fbe Added a TODO for some badness.
  remotes/origin/HEAD   -> origin/master
  remotes/origin/master 1c33fbe Added a TODO for some badness.
  remotes/trunk         1c33fbe Added a TODO for some badness.

ってこんなんでいいんだろうか。でも使えてるっぽいです。