gitとsvnでのプラグインの公開方法

gitが素晴らしーと思ったのはプラグイン作ってるときです。
いつもプラグインを作る時はプラグインをテストするためのプロジェクトを作るわけですが、Subversionだとリポジトリ上で、アプリとプラグインを分けるためにはローカルなディレクトリも分けなければなりませんので、開発の流れとしては、

  1. Railsのプロジェクトを作る
  2. ruby script/generate plugin xxx
  3. プロジェクトをコミット
  4. .svnを除いてプラグインをコピー
  5. プラグインをコミット
  6. コードを変更
  7. 3に戻る

面倒くさい。で、gitだと、プロジェクトのリポジトリ内にプラグインリポジトリがあってもOKなので、

  1. Railsのプロジェクトを作る
  2. ruby script/generate plugin xxx
  3. プロジェクトをコミット
  4. プラグインをコミット
  5. コードを変更
  6. 3に戻る

と一個手順が減ります。この「.svnを除いてプラグインをコピー」という一個が大きいです。プロジェクトが増えたりプラグインが増えると自分で作っていて訳分かんなくなりますし、.svnを除いてコピーっていうスクリプトでも書けばいいのかもしれませんが、できることならやりたくない手順です。


で、僕的なgitとsvnの位置づけはこんな感じ。

ローカルgit 公開するかどうか分からないもの
github いけるかどうか分からないけどひとまず公開したいもの
subversion ちょっといい感じなので皆に使ってもらいたいもの

subversionは普及しているので、色んな人に使ってもらいやすいっす。


できることならローカルgit--->github--->subversionという順番で公開していきたいんですが、git svn initはhttp://www.kernel.org/pub/software/scm/git/docs/git-svn.html によると、空のディレクトリを初期化するだけなんで、既に作られているローカルなgitリポジトリsvnリポジトリと関連付けることはできません。なので以下のような手順を踏む必要があります。

ローカルからgithub

  1. githubリポジトリを作成する
  2. git remote add origin git@github.com:akm/xxxx.git
  3. git push origin master

subversionにも公開

  1. 対象となるディレクトリの上にcd
  2. 対象となるローカルリポジトリを削除(あるいはバックアップ取っておく)
  3. Subversionリポジトリディレクトリを作成
  4. git svn clone http://xxxx.googlecode.com/svn/xxxx (-sとか付けておくと便利かも)
  5. cd xxxx
  6. git remote add origin git@github.com:akm/xxxx.git
  7. git pull origin master
  8. (ここでなぜかコンフリクトが起きたら修正)
  9. git rebase --continue
  10. git svn rebase
  11. (またここでなぜかコンフリクトが起きたら修正)
  12. git rebase --continue
  13. git svn dcommit


追記
でもなー、githubからgooglecodeとかに公開した方がいいのかなー。よく分かんないなー。みんなどうしてるんだろう?