バージョン管理システムは、
ソフトウェア開発において、ソースコードやその他のファイルの変更履歴を管理するための重要なツールです。開発者は、
バージョン管理システムを利用することで、変更の追跡、過去のバージョンへの復元、複数人での同時作業などを効率的に行うことができます。ここでは、
バージョン管理システムの主な
ソフトウェアを、そのアーキテクチャに基づいて3つのカテゴリに分類し、それぞれの特徴と代表的な
ソフトウェアを紹介します。
ローカルデータモデル
ローカルデータモデルは、最もシンプルなバージョン管理のアプローチです。このモデルでは、すべての開発者が同じファイルシステムを使用し、ローカル環境で直接ファイルを操作します。そのため、チーム全体で同一の環境が必要になり、共有が難しくなることがあります。
オープンソース
Revision Control System (RCS): RCSは、最新バージョンと過去の変更差分を格納する
バージョン管理システムです。
C言語で実装されており、トランクチップへのアクセスが高速である一方で、ブランチチップへのアクセスや包含・除外された差分のサポートには欠けています。比較的古いシステムですが、そのシンプルさからいまだに利用されています。
Source Code Control System (SCCS):
UNIXの一部として開発されたSCCSは、RCS以前の主要な
バージョン管理システムです。インターリーブデルタに基づいてバージョンを構築し、任意バージョンの抽出時間を均一にするため、複数の同時バージョンとマージが多い環境で有効です。
クライアント/サーバーモデル
クライアント/サーバーモデルでは、開発者は共有の単一リポジトリに接続し、そこでファイルの変更を行います。このモデルは、チームでの共同作業を円滑にし、変更の集中管理を可能にします。
オープンソース
Concurrent Versions System (CVS): CVSは、RCSを基に構築されたオープンソースの
バージョン管理システムです。GPLライセンスで提供され、
C言語で実装されています。多数の開発者による同時作業をサポートする機能がありますが、ブランチやマージの処理が複雑になることがあります。
CVSNT: CVSのクロスプラットフォーム版で、大文字と小文字を区別しないファイル名に対応するなど、CVSの機能が拡張されています。
OpenCVS: セキュリティとソースコードの正確性を重視した
BSDライセンスのCVSクローンです。
Subversion (SVN): CVSに影響を受けて開発された
バージョン管理システムで、
C言語で実装されています。CVSの課題を改善し、アトミックコミットやメタデータのバージョン管理などの機能を追加しています。
Vesta: バージョニングファイルシステムと分散リポジトリをサポートするビルドシステムです。
プロプライエタリ
AccuRev: 「ストリーム」に基づいた並列およびグローバル開発を効率的に管理する構成管理ツールです。問題追跡機能が統合されており、レプリケーションサーバーも利用可能です。
Alienbrain: デジタルアセット管理システムで、バージョン管理に加え、構成管理やステータス管理の機能も提供します。特にバイナリデータやCGデータの管理に強みを持っています。
Autodesk Vault:
AutoCADやAutodesk Inventorなどの設計ファイルの複雑な関係を管理するために設計されたバージョン管理ツールです。
CADES: International Computers Limitedが開発した、デザイナー向けの生産性向上と
バージョン管理システムです。
Dimensions CM: Micro Focusが開発した
ソフトウェア変更および構成管理システムで、リビジョン管理機能を含んでいます。
Helix Core (旧 Perforce Helix): 大規模な開発環境向けの
バージョン管理システムです。
IBM Configuration Management Version Control (CMVC):
IBMが提供していた
バージョン管理システムで、現在は提供を終了しています。
IBM Rational ClearCase:
IBM Rational SoftwareによるSCC準拠の構成管理システムです。
IBM Rational Synergy:
IBM独自のSCC準拠の統合変更管理およびタスクベースの構成管理システムです。
IBM Rational Team Concert:
IBM Rational Softwareによるコラボレーションおよびアプリケーションライフサイクル管理プラットフォームです。
IC Manage Global Design Platform (GDP): IC設計および
Perforceインフラストラクチャをサポートする設計データ管理システムです。
Perforce Helix: 集中型の
バージョン管理システムですが、2015.1以降分散型にも対応しています。ロック方式を採用し、マージ機能も備えています。
Panvalet: 1970年代から
IBMメインフレームコンピュータで使用されてきた、ソースおよびオブジェクト制御のためのシステムです。
PTC Integrity (旧 MKS Integrity): PTCが提供する統合的な
ソフトウェア開発プラットフォームです。
PVCS (旧 Polytron Version Control System): Don Kinzerによって1985年に開発され、現在はMicro Focusが所有する
バージョン管理システムです。
Quma Version Control System: 企業向けの
バージョン管理システムです。
Razor (構成管理): Visible Systemsの統合スイートに含まれる構成管理ツールです。
SOS: Cliosoft社が開発した、半導体設計を対象とした集中型
バージョン管理システムです。
StarTeam: Micro Focus (旧Borland) が提供する、
ソフトウェア配信プロセスの調整・管理、デジタル資産と活動の集中管理ツールです。
Surrounding SCM: Seapine Softwareが提供するバージョン管理ツールです。
TeamCity: JetBrainsが開発した、Javaベースのビルド管理と継続的インテグレーションサーバーです。
Vault: SourceGearが提供するバージョン管理ツールで、最初のインストールは無料で利用可能です。
Visual SourceSafe: Microsoftが開発したバージョン管理ツールで、小規模チーム向けに設計されています。
分散モデル
分散モデルでは、各開発者が独自のローカルリポジトリを持ち、変更を個別のステップとしてリポジトリ間で共有します。このモデルは、オフラインでの作業を可能にし、柔軟なワークフローをサポートします。
オープンソース
ArX: Walter Landryが実装し、GNU archから派生して完全に書き直された
バージョン管理システムです。
Bazaar:
Pythonで実装された
バージョン管理システムで、高速性と使いやすさを追求しています。Archアーカイブのロスレスインポートが可能です。
BitKeeper:
Linuxカーネル開発で使用されて有名になった分散型
バージョン管理システムですが、契約違反によりライセンスが取り消されました。2016年にオープンソース化されています。
Codeville:
Pythonで書かれた分散型
バージョン管理システムで、革新的なマージアルゴリズムを使用しています。
Darcs:
Haskellで書かれた
バージョン管理システムで、パッチ間の依存関係を追跡し、パッチの理論を用いて自動的に再配置やチェリーピックが可能です。
DCVS: 分散型かつCVSベースの
バージョン管理システムです。
Fossil:
SQLite開発者によって実装された分散型リビジョン管理システムで、Wiki、バグ追跡、フォーラムなどの機能を備えたオールインワンソリューションです。
Git:
Linuxカーネルプロジェクトから
リーナス・トーバルズによって設計された、分散型
バージョン管理システムです。高速、柔軟性、堅牢性に優れています。
GNU arch:
C言語と
シェルスクリプトで実装された、分散型
バージョン管理システムです。
Mercurial:
BitKeeperのオープンソース版として
Pythonで実装された、分散型
バージョン管理システムです。高速、軽量、ポータブルで使いやすいことが特徴です。
Monotone: Monotoneチームによって開発された分散型
バージョン管理システムで、ピアツーピア方式を採用しています。
プロプライエタリ
Code Co-op: ピアツーピア方式の
バージョン管理システムで、同期に電子メールを使用できます。
Sun WorkShop TeamWare:
BitKeeperの開発者ラリー・マクボイによって設計された
バージョン管理システムです。
Plastic SCM: Codice Software, Inc.が開発した
バージョン管理システムです。
Visual Studio Team Services: Microsoftが提供する、チームがコードを共有し、作業を追跡し、
ソフトウェアをリリースするためのサービスです。
関連項目
バージョン管理システム
ソースコードホスティング機能の比較
脚注
[外部リンク]
Configuration Management Tools - Curlie
この一覧は、
バージョン管理システムの多様性を示しています。プロジェクトの規模、チームの構成、必要な機能に応じて適切な
バージョン管理システムを選択することが重要です。