ソフトウェア開発においては、バージョン管理システムが必須ですが、世の中には沢山のバージョン管理利ステム(VCS) があります。
まとめてみました。
SCCS
Source Code Control System (SCCS) は、世界初のソースコードバージョン管理システムです。
1972年、ベル研究所の Marc J. Rochkind が IBM System/370 上の OS/MVT 向けに開発しました。
その後、PDP-11上のUNIXに移植され、SCCS は初期のUNIXの一部とされました。
ソースをチェックアウトすると、占有されるなど排他制御されていました。
RCS (Revision Control System)
RCSは、Walter F. Tichy が、1980年代にパデュー大学に在籍していたころ開発したバージョン管理システムです。
RCSは、SCCSと同様にファイルをロックする事で同時編集を禁止しています。
Visual Source Safe/TFS
Microsoft Visual SourceSafe (VSS) は、マイクロソフトが開発し販売していたバージョン管理システムです。
現在の後続製品は Team Foundation Server(TFS)です。
CVS (シーブイエス)
Concurrent Versions System (コンカレント・バージョンズ・システム、並行バージョンシステム) は、通常CVS (シーブイエス) と略されます。
テキストファイルの変更を記録し管理するバージョン管理システムで、フリーソフトウェアです。
2000年代の前半まで、多くのオープンソースで使われました。
CVSは、SCCSやRCSと異なり、強固なロックメカニズムはもちません。
よって、同時編集を許可する代りにコンフリクトが生じた場合、コミット時にマージ操作が必要となります。
このことは、インターネット上などで、多くの人で開発作業する場合に向いていると言えるでしょう。
また、ディレクトリの移動が出来ない (フォルダ名の変更ができない) などの制約がありましたが、速度が速い、過去のリビジョンとの比較が容易などの特徴がありました。
Subversion (サブバージョン)
Subversion(Apache Subversion)は、さまざまなソフトウェアの開発現場において広く使われているソースコード管理システムです。
CVSとコマンドの互換性があり、また、CVSの制約でもあったフォルダ名の変更も可能でした。
2005年ごろまで主流のバージョン管理システムでした。
BitKeeper
BitKeeperは、商用のバージョン管理システムでした。
初期のLinuxカーネルを管理していたことで有名です。
しかし、オープンソースソフトウェア開発者によるリバースエンジニアリングなどを巡って、リーナス・トーバルズらを巻き込んだ激しい騒動となり、コミュニティと決別しました。
この事件が後にGitやMercurialといったソフトウェアが生まれるきっかけとなっています。
2016年5月にオープンソースとして公開されました。
Mercurial
Linuxカーネル開発者の一人でもあったMatt Mackallが開発した、BitKeeperに代わる分散型バージョン管理システムです。
クロスプラットフォームの分散型バージョン管理システムで、Pythonで実装されています。
MozillaのソースコードはMercurialで管理されています。
Git (ギット)
Git(ギット)は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムです。
Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されています。
まとめ
現在の主流はGitでよいと思います。
Googleトレンドで見た、バージョン管理システムの人気度です。
Graph from Google Trends. See an interactive version here.
コメント