git-svn
変更即共有をしたくない場合やひとりで大規模な変更を考えてる場合 ( branch 切って頑張る ) 、 raptop PC なんかで standalone で開発せざるを得ない時間がある場合に有効、というのはもっともらしい利点だけどそれ以上に git の感覚を使いまわせるのがうれしいんじゃないかなと思う。 svn に比べて command 体系が整備されていたり rm や mv をまともにできたりと作業しやすいのは git の方だと思うのでこれは重要。あと git から入ったひとが svn repository をいじれるので夢がひろがりんぐ、というのは community にとってはバカにならないことかもしれない。
で、使ってみることにしたんだけどとりあえず以下の脳内置換を覚えておけばいいのかな。要は remote が関連するところだけ git svn ではじまる command を使えばいい、と。
git | git-svn |
---|---|
git clone | git svn clone |
git pull | git svn rebase |
git push | git svn dcommit |
いまいち branch の扱いとかよくわからんのだけど man には branch 管理や merge は git command を使って user がやってね ( ばちこーん ) !! とか書いてあるから普通に git で好き勝手やって master に merge したあと dcommit すりゃいいのかな。
あと pull がなくて rebase だけってのは変更箇所がかぶってた場合、
- svn update -> conflict -> merge ( merge に履歴とかないし ) -> commit
- git pull -> conflict -> merge ( 履歴が残る ) -> commit
- git rebase -> conflict -> merge ( 履歴残らない ) -> commit
ということなわけで、意味的に 1 に近いのは 3 だろうということかな。まぁ 2 のような分散 repository だからこそ生じる状況は svn には処理できないというだけだろうけど。