分散同時バージョンシステム

分散同時バージョンシステム
開発者エレゴソフトウェアソリューションズGmbH
初回リリース2002年8月 (2002-08
最終リリース
1.0.3 / 2006年9月25日 (2006年9月25日
書かれたC
オペレーティング·システムUnixライクWindows
タイプリビジョン管理
ライセンスGNU一般公衆利用許諾契約書
Webサイトdcvs .elegosoft .com

Distributed Concurrent Versions SystemDCVS)は、分散型リビジョン管理システムであり、ローカルに分散した複数のサイトで作業するソフトウェア開発者が、ソフトウェアプロジェクトで効率的に共同作業を行うことを可能にします。DCVSは、よく知られたバージョン管理システムであるConcurrent Versions Systemをベースとしていました。コードはGNUライセンスおよびBSDライセンスの下で自由に配布可能でした。このプロジェクトは2023年末までに終了しました。

モチベーション

CVSは純粋な中央集権的な組織モデルに基づいており、オフラインサポートはほとんど提供されていません。ほぼすべてのバージョン管理操作はリポジトリへの直接アクセスを必要とします。そのため、世界規模で分散したソフトウェア開発では、CVSの使用時に深刻なパフォーマンスの問題に直面します。DCVSは、中央CVSリポジトリを複数のサイトに分散させることでこの問題に対処しています。

特徴

DCVSはCVSのすべての機能を提供します。しかしCVSとは異なり、DCVSシステムは地理的に分散した任意の数のリポジトリで構成でき、それらのリポジトリの内容は、John D. Polstraによって開発されたプログラムであるCVSupの拡張版によってバックグラウンドで均等に維持されます。以降の段落では、 DCVSリポジトリ、拡張CVSupサーバー、およびDCVSサーバープログラムの組み合わせをDCVSサーバー と呼びます。

すべての開発ラインのすべてのコンテンツは、任意の DCVS サーバーから、開発者が所有するDCVS ワークスペースにチェックアウトできます。 diffpatchlogannotateなど、リポジトリを変更しないすべての操作は CVS と同様に機能しますが、常にローカル リポジトリを使用するため、分散シナリオでははるかに高速になります。 衝突やデータ損失を回避するために、各 DCVS サーバーには、担当する開発ライン (DCVS ブランチ) のセットが割り当てられます。 ブランチへの変更は、そのブランチを担当するサーバーでのみチェックインできます。 開発ラインごとに変更を分けることで、変更を DCVS ネットワークに自動的に転送および配布することが可能になります。 ローカルの DCVS サーバーが担当していない開発ラインの変更をコミットしたいユーザーは、新しい開発ライン (ブランチ) を作成し、そこに変更をコミットできます。 新しく作成された開発ラインは、自動的にローカル サーバーが担当することになります。

一方、各開発者は、自分のローカルDCVSサーバーが担当していない開発ラインの変更を、ローカル開発ラインにマージすることができます。つまり、担当するDCVSサーバーの開発者がマージ操作を実行することで、どの作業サイトで行われた変更も元のブランチに適用できます。

変更セットの機能により、開発者は機能や欠陥に関連する小さな変更セットを作成し、それを他のユーザーが適用できるようになります。

特定の番号付けスキームにより、開発ラインとデルタが特定のDCVSサーバーに属していることを識別できます。DCVSは、すべてのペア(サーバー/コレクション)に一意のブランチ番号範囲を割り当てます。すべてのサーバーとコレクションのすべての範囲は、互いに排他的である必要があります。サーバー、コレクション、および範囲の定義は、単一の構成ファイルから読み込まれます。このファイルの内容を参照することで、各DCVSサーバーは、特定のファイルの特定のブランチまたはデルタを担当しているかどうかを判断できます。担当している場合は、すべての変更操作が許可されます。担当していない場合は、適切なリモートサーバーでのみ変更操作が可能です。

また、設定の実際の名前(タグ)は、すべてのタグを拡張したサーバ固有のサフィックス(例:_at_dcvs_mydomain_org)によって、1つのDCVSサーバに一意に割り当てられます。そのため、タグの名前空間における競合は発生しません。

歴史

DCVSは、ドイツのベルリンにあるElego Software Solutions GmbHのチームメンバーによって開発されました。DCVSの最初のリリースは2002年8月でした。2005年11月にはバージョン1.0.2がリリースされました。プロジェクトは2023年末までに終了し、リポジトリは削除されました。