/ / 最新 / 2009-09 / RSS / twitter / tumblr / 09014502501 / mail@ssig33.com

屋久島沈没


git-svn のちょっとイイ話

Git-SVN を使ってる人が周りになんとなく増えてきたので。

SVN クライアントとして Git を使える利点は、ネットワークどうこうというよりは、 Git の便利機能が使えまくることなんじゃないかと思います。

Git が SVN よりも圧倒的に優れている点としては、ブランチのマージが楽という点が挙げられると思いますが、 Git-SVN を使うことで、 SVN ユーザーもこの Git の優れたマージ機能の恩恵を被れます。

SVN は CVS よりブランチ作りやすくなってるけど、マージが困難なので結局ロクにブランチ切らない、みたいなことも多いと思うのですが、 Git-SVN があればガンガンブランチ切ってはマージしまくって、というふうに作業出来ると思います、よかったですね。

んで、 Git-SVN を使っていると、今自分が作業しているのがどこにコミットされるのか微妙に分からなくなったりする時があるのですが(ローカルのブランチ名とリモートのブランチ名が違ったりすることが多いので)、

git svn info

などとすると、幸せになれます。

手元で開発する時は、適当なローカルブランチ切ってガンガン開発して、適度なタイミングでマージして、とやっていけばいいのですが、リモートの本家リポジトリでブランチが切られた場合は、

git checkout -b local_shit shit

とかやって、shit ブランチに対する local_shit を作るといいんじゃないですかね。 local_trunk も作っとくと分かりやすくなるかと思います。

Git-SVN の master は、リモートの HEAD があるブランチを master にするとうクソ仕様なので、 local_trunk 作っとくと分かりやすいのではないかと思います。

んで、ローカルで勝手に作ったブランチ間のマージは好きにすればいいと思うのですが、 SVN の方で作られたブランチをマージする時は注意が必要です。

必ず、

git merge --no-ff local_shit

として、マージ時にコミットするようにしましょう。そうしないと、 SVN サーバーのどこにコミットするかという設定が shit ブランチにコミットする設定になってしまって、つまりマージもなにも無い状態にされてしまって人間が死ぬからです。

という訳で、流れとしては、

git svn clone => git checkout -b local_trunk trunk => ローカルブランチ作りまくったりして開発 => SVN の方でブランチ切る => git checkout -b local_shit shit => local_shit に対して開発して、リモートの shit にコミットしたり => git merge --no-ff で trunk にマージしたり

というような流れになるんじゃないでしょうか。

ところで、 Git-SVN は分散バージョン管理とかどうでもええよ、とか思ってる人にとっても、 more better Subversion として使える感じなので、今すぐ使いはじめればいいんじゃないですかね。

次は文系同人作家の為の Git という記事書きたいんだけど、全然モチベーションが湧いてこない、実際に書くのは 20 年後とかになる。

blog comments powered by Disqus

Referrer (Inside):

[ 固定リンク ]