特集
» 2013年07月05日 18時00分 公開

ガチで5分で分かる分散型バージョン管理システムGit (3/6)

[平屋真吾,クラスメソッド株式会社]

2分―― なぜ必要か。集中型と分散型の違い

 バージョン管理システムは大きく「集中型バージョン管理システム」と「分散型バージョン管理システム」に分けることができます。集中型バージョン管理システムであるSVNと分散型バージョン管理システムであるGitの違いを見ていきながら、Gitを使う必要性について説明します。

集中型バージョン管理システム「SVN」

 SVNはGitが登場する前から使われている集中型のバージョン管理システムです。SVNよりも先に公開されたバージョン管理システムに「CVS」がありますが、SVNはCVSを参考にして開発されました。まずはSVNについて見ていきます。

 SVNは集中型(クライアント・サーバ型)のバージョン管理システムです。ファイルそのものや変更の履歴などを保存する場所を「リポジトリ」(貯蔵庫)と呼びますが、SVNの場合は(ソフトウェア1つにつき)1つのリポジトリを使います。ソフトウェア開発に参加するメンバーは、中央リポジトリ(プロジェクトメンバー間で共有するリポジトリ)からソースコードを持ってきて編集し、編集が終わったら中央リポジトリに直接反映します。

 SVNは集中型のバージョン管理システムなので、リポジトリが置かれたサーバに接続できない環境の場合、最新のソースコードを取得やファイル編集の反映ができません。

分散型バージョン管理システム「Git」

 集中型バージョン管理システムのSVNに対し、Gitは分散型のバージョン管理システムです。

 リポジトリを複数持つことができ、開発の形態や規模に合わせてソースコードの管理ができます。リポジトリを複数用意できるので「分散型」と呼ばれています。

 例えば上の図のように、リモートリポジトリをサーバ上に置き、開発者それぞれがローカルにリポジトリを持つという構成が考えられます。この場合、普段はローカルリポジトリを使って作業し、ある程度作業できたらリモートリポジトリに反映するといった使い方ができます。リモートリポジトリにアクセスできない環境でも作業を進めることができます。

 また、大きな規模のソフトウェアの場合、個人や小さなチームで試験的に実装を進めて、ある程度進んだ時点で親のリポジトリや他の開発者のリポジトリに反映するといった使い方ができます。開発者同士の作業を柔軟に進めることができ、オープンソースのプロジェクトなどにも適しています。

まとめ

 SVNとGitの特徴をそれぞれ見てきましたが、両者の大きな違いはリポジトリを複数持てるかどうかだと思います。Gitであれば開発の形態や規模に合わせて複数のリポジトリを構成でき、システム構成を柔軟に作り上げることができます。複数の人が関わるプロジェクトであれば、Gitを使ってバージョン管理を行う必要性があるのではないでしょうか。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。