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の内容もアップデートされるのかな.