2009-10-07

Git リポジトリーを Subversion にリポジトリー追加 (Git-svn の応用)

Git で管理していたプロジェクトを、Google Codes (Subversion) にも突っ込んだ。面倒だったので、ちとメモ。

Git repository の作成

まずは Git repository の作成。lpaldb というプロジェクトを作る。

$ mkdir lpaldb
$ cd lpaldb
$ touch README
$ edit index.html
$ ...
$ git init
$ git add .
$ git commit -m 'first commit'
$ cd ..

Google Codes のレポジトリー

Google Codes の Hackathon 用リポジトリーは、複数のプロジェクトを次のやうに管理している。

/branches
/tags
/trunk
  /Hackathon-Title
  ...
  /gae20090411
  /gae200906
  /html5_20091003
/wiki

trunk 以下のハッカソンごとのプロジェクトを。更にその下の各人のプロジェクトを置く形式。

今回は、/trunk 以下の html5_20091003 の下に自分のプロジェクト lpaldb を突っ込む。

Git Svn

Git Svn を使うと、Git で Svn のリポジトリーを操作できる。

ただ、hackathon-jp はとても大きなリポジトリーなので、全てのリポジトリーをローカルに持って来るのは大変。必要なコードも一部だけなので、それは避けたい。

そこで、/trunk/html5_2009103 以下だけを取って来た。git svn clone に Trunk を指定する -T オプションを使う。

$ git svn clone https://hackathon-jp.googlecode.com/svn/trunk -T html5_20091003 html5

これで html5 というディレクトリーが出来る。

これにさっきの git repository を追加する。

$ cd html5
$ git fetch ../lpaldb master:lpaldb

lpaldb (git) を lpaldb branch として html5 に取り込み。

$ git checkout lpaldb
$ mkdir lpaldb
$ git mv html lpaldb
$ git mv README lpaldb
$ ...
$ git commit -m 'Move lpaldb source into lpaldb dir'

lpaldb branch をきれいにしたら、master ブランチに merge。その後、本家 svn repository へアップする。

$ git checkout master
$ git merge lpaldb
$ git svn dcommit

これでお終い。フゥ、一苦労。もっと楽な方法があったら教えて下さい。

No comments:

Post a Comment