2009/06/23

git(2) - from sourceforge.jp SVN

http://iteman.jp/blog/2009/02/subversiongit-stagehand-testru.html
http://ml.ethna.jp/pipermail/users/2009-June/001138.html

Ethna のソースコードリポジトリを subversion から git に移行した。subversion から git への移行は git-svn を使うのが定番のようになっているが、以下のコマンドを使っても git-svn は指定されたディレクトリ以下のディレクトリ名をブランチにするだけで、tag をうまく扱ってくれなかった
$ git svn clone -T trunk -t tags -b branches svn+ssh://...
このコマンドの実行結果は以下のようになる。タグもブランチとして扱われている
$ git branch -r
* master
ETHNA_2_1_1
ETHNA_2_3
ETHNA_DBLAYER_UNITE_BRANCH
....
tags/ETHNA_2_1_0
tags/ETHNA_2_3_0
----

これでは話にならないので、svn2git を使った。はじめ gem でインストールしても svn2git が command not found になったので焦ったが、/var/lib/gems/1.8/bin 以下に見つかったので、それを直接実行したところうまくいった
$ gem sources -a http://gems.github.com
$ gem install nirvdrum
-svn2git
$ /var/lib/gems/1.8/bin/svn2git http://svn.sourceforge.jp/svnroot/ethna/ethna/ \
--verbose --trunk trunk --branches branches --tags tags
実行中の出力は git-svn と変化ないように見えるが、結果の違いは歴然としている
$ cd ethna
$ git tag -l
ETHNA_2_1_0
ETHNA_2_3_0
ETHNA_2_3_2
....
$ git branch -r

ETHNA_2_1_1
ETHNA_2_3
ETHNA_LEGACY_EUCJP_BRANCH

ここまで出来れば、remote を登録してすべてを移行するだけである。
$ git remote add origin USERNAME@git.sourceforge.jp:/gitroot/ethna/ethna.git
$ git push
--all
$ git push
--tags
----

なお、最初のリンクにも示しているが、本エントリはitemanさんが書いたものをほぼそのまま実行しただけである。元エントリを書いたitemanさんには深く感謝申し上げる次第である。

0 件のコメント: