オープンソースプロジェクトではソースコードの共有や管理にバージョン管理システムを使っていることが多い。バージョン管理システムを使ってソースコードの共有とバージョニングを可能にすると、複数名での開発やロールバックが簡単の実現できるようになる。オープンソースプロジェクトに限らず、商用システムの開発でも活用できる機能だ。
以前はCVSが代表的なシステムだったが、現在ではほかにもいくつかの候補がある。候補はいくつもあるが、Smashing Magazineの7 Open Source Version Control Systems Reviewedに興味深い記事が掲載されているためチェックしておきたい。同記事では7つの代表的なバージョン管理システムが簡潔にまとめられている。簡単にまとめると次のとおり。
- CVS - 1986年にリリースされた古くから存在するリビジョン管理システム。現在でも多くのシーンで活用されているバージョン管理システムのデファクトスタンダード。ただし後発のバージョン管理システムと比較した場合には実現されていない機能もある。利用学習はそれほど難しくなく、システム自身はシンプル
- Subversion - もっとも広く活用されているバージョン管理システム。ApacheやSourceForgeをはじめさまざまなホスティングサービスでも活用されている。操作性はCVSに似ている
- Git - 分散バージョン管理システム。Linux Torvalds氏によって開発されたシステムで高速で効率的に動作するように工夫されており、Linuxカーネル開発をはじめいくつものオープンソースプロジェクトで採用されている。代表的なバージョン管理システムのほとんどがCVSと同じ操作性を提供しているのに対してGitは独自の操作性を提供している
- Mercurial - 分散バージョン管理システム。大規模プロジェクトでも採用できるように設計されたシステムで、機能を抑えるかわりにかなり高速に動作するうえに高いスケーラビリティを実現している。操作性はCVSに似ている
- Bazaar - 分散バージョン管理システム。ユーザの使いやすさに焦点をあてたシステムで、集中管理から非集中管理までさまざまなワークフローを実現できるという特徴がある。操作性はCVSに似ている
- Monotone - 分散バージョン管理システム。性能よりも整合性の実現に注力して開発されている。操作性はCVSに似ている
- LibreSource - コラボレーションを実現するためのポータルアプリケーション。J2EEやSubversionをベースに構築されたシステムで、バージョン管理システムについて学習する必要性が削減されているところに特徴がある
Git、Mercurial、Bazaar、Monotoneなど比較的最近登場したバージョン管理システムは集中したリポジトリを必要としない分散バージョン管理システムだ。Gitは独自の操作方法を提供しているが、それ以外はCVSとよく似た操作性を提供しているためCVSを使ったことがあれば新しく操作を学習する必要性が低いという特徴がある。
7 Open Source Version Control Systems Reviewedはプロジェクトでバージョン管理システムを選択する場合の資料として活用できる。それぞれに特徴があるため必要性に応じて検討材料にするといいだろう。