git-svnについてちょっと理解した

今年度に入って,やっと研究室で作ったツールをバージョン管理しだした.
サーバにはSubversionを選択したけど,コミットがいきなりサーバで公開されるのはちと恐い.

そこでローカルでは git を使うことにした.
gitでは,コミットは基本的に自分だけのリポジトリへ行い,サーバへは明示的にしないかぎり,コミットしない.
だから色々失敗しても大丈夫.

今回は,gitでSubversionリポジトリをあつかうための自分用メモ
gitのバージョンは1.6.1

$ git --version
git version 1.6.1

リポジトリのコピー

まずは,git-svnを使ってサーバからリポジトリをコピーする.

$ git-svn clone -s http://svn.repository/svn/hoge hoge

これで,今のディレクトリに hogeという名前でコピーされる
ただし,Subversionみたいにtagやbranch,trunkといったフォルダがあるわけではなく,いきなりsvnで行った直近のコミットの内容が入っていた.

branchとtagの扱い

そこで,trunkの内容をローカルに取ってきて,branchの一つに登録しておく.

$ git checkout -b local-trunk trunk

すると,これからは

$ git checkout -f local-trunk

とすることで,trunkの内容が再現できる.リモートとローカルを同じ名前にしてしまうと,

warning: refname 'trunk' is ambiguous.

と警告がでた.この警告の影響まで調べきらなかったけど,違う名前にすると出なかったので,とりあえずはOKということにした.


同じような要領で,tagsの内容もローカルへ取ってきて,tagに登録する

$ git checkout -b 1.0 tags/1.0
$ git tag 1.0

tagに全て入れたら,同じ内容のbranchは不要と考え,消した.

$ git branch -d 1.0

今日はここまで!

あとちょっとわからないことは,git svn rebaseしたときの挙動かな.
local-trunkやtagの内容もアップデートされるのかな.