(おまけ)バージョン管理システムにおける集中型と分散型の違い。
スポンサーリンク
Subversion のような集中型バージョン管理システムしか使ったことがない人にとって、Git や Mercurial のような分散型バージョン管理システムを理解するには少し苦労すると思う。(自分も正しく理解できている自信はないけど…)
例えば、リポジトリにリモートとローカルの二種類があることや、プッシュやプルといった用語は馴染みがないはずだ。
また、集中型におけるチェックアウト・コミットと、分散型におけるチェックアウト・コミットの役割は若干異なる。
まず、リポジトリとワークスペースの関係は以下のようになる。
次に、チェックアウト・コミット・プル・プッシュの意味合いは大体こんなイメージになる。
- 集中型におけるリソースの流れ:
- 分散型におけるリソースの流れ:
とりあえず、こんな感じの理解で良いはず。
- 集中型におけるチェックアウト = プル + 分散型におけるチェックアウト
- 集中型におけるコミット = 分散型におけるコミット + プッシュ
ちなみに、Git は今年に入って使い始めたが、Mercurial は数年前に使い始めた。
まだ Git に慣れていないというのもあるが、今の所、Mercurial の方が GUI アプリケーション(TortoiseHG)の完成度が高くて使いやすいと感じている。
参考資料:
関連記事: