2012年6月4日月曜日

続続・SVN使いだがGitに乗り換えようと思う


GitのブランチがSubversionのそれと違うなぁと思った点を3つ。

まず実装。そもそもSubversionのブランチは、運用でブランチとして扱っているだけの単なるサブディレクトリなので、明確にブランチ機能を備えたGitとはまるで違う。

次にブランチ作成の気軽さ。Subversionでブランチを作るということは、共有レポジトリに新たなサブディレクトリを作るということ。運用ルールにもよるけれど、ちょっとした実験用ブランチを作るのは気が引けてしまうことも多い。一方Gitなら、あくまで自分専用のレポジトリなので、実に気軽にブランチを作成できる。

最後にマージの厳格さ。コミットもブランチ作成も気軽なGitだけれど、マージに関してはSubversionよりGitの方が細かい。Subversionの場合、どの変更をマージしたかという情報(mergeinfo)が欠落している場合が結構ある。…というか、mergeコマンドを使わない(人|クライアント)が結構多い気がする。mergeinfo自体が後付けなので仕方ない気もするけれど、理由はどうあれ、何をマージしたのか分からなくなるのは非常に困る。
一方Gitは、マージも含めて適用してきた変更をきちんと把握しているので、mergeコマンドでは未適用の変更のみを正確に適用できる。もちろんGitでも、mergeコマンドを使わずに出所不明の変更としてcommitすることはできるけれど、そこは分散型の良いところ。自分専用のレポジトリなのだから、きちんとマージするというルールを自分だけが守っていれば、他人のいい加減なマージに振り回されることは無い。

他人のレポジトリと同期する話は後ほど。

0 件のコメント:

コメントを投稿