2011年11月6日日曜日

独りgitで、foltiaのsvnリポジトリから独りforkする

分散バージョン管理としては、筆者はmercurialが好きですが、やむなくgitを使うことがままあります。githubで公開してますー、なんてプロジェクトはもとより。

svnリポジトリしか公開してないオープンソースを、個人的にイジり倒す場合は、gitの方が有利です。というのは判っていたのですが、未だに馴染みません。概念が高度すぎるような気がします。baseとか。サブコマンドのネーミングセンスも独特です。哲学の領域を感じます。

当面の目的は、foltiaの独りパッチ運用です。残念なことにオリジナルリポジトリがsvnですが、筆者はsubversionはもう辞めたい。触りたくないレベル。やむなくgitの出番です。

まず、svnをcloneします。
git svn clone http://svn.dcc-jpl.com/foltia/trunk svn-git-foltia

筆者が改造して使ってるのは、2011年5月辺りまで遡るので、git checkoutでチェンジセットを合わせた後、幾つかの改造をcommit。
foltia@ubuntu:~/svn-git-foltia/install$ git branch -av
* (no branch) b89dd80 delete from here
  master a50c07b radiko/らじる録音のリトライ機能追加
  remotes/git-svn a50c07b radiko/らじる録音のリトライ機能追加
非gitのリモートリポジトリは、勝手にremotes/*ブランチになるみたいですね。こういう暗黙の了解が多いのが、正直馴染みません。#ブランチに入っちゃうと、そのブランチのチェンジセットログしか参照できないっぽいのも個人的には困ってるのですが。
勝手ブランチが判れば、マージは出来ます。gitのマージはcommitまで含んでしまうようですね。
git checkout --force remotes/git-svn ; git merge b89dd80

今回は、独りforkにブランチ名を付けてなかったので、鈍くさい仕上がりですが、目的は果たせました。