Concurrent Versions System

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Concurrent Versions System
開発元 The CVS Team
初版 1990年11月19日 (33年前) (1990-11-19)
最新版
1.11.23 / 2008年5月8日 (15年前) (2008-05-08)
最新評価版
1.12.13 / 2006年7月26日 (17年前) (2006-07-26)
リポジトリ ウィキデータを編集
プログラミング
言語
C
対応OS Unix系Windows
種別 バージョン管理システム
ライセンス GPL
公式サイト www.nongnu.org/cvs/
テンプレートを表示

Concurrent Versions System(コンカレント・バージョンズ・システム、並行バージョンシステム)は、通常CVS(シーブイエス)と略される、テキストファイルの変更を記録し管理するバージョン管理システムフリーソフトウェアである。

概要[編集]

主にソフトウェアの開発におけるソースコードを始めとしたテキストファイルの共有(保存、取出し)に使われる。テキストファイルの枝分かれした版を管理することができる。

枝分かれ(並行ヴァージョン)の機能を使わなくても、ファイルの直線的な追加改変を追いかけるのに使うことができる。特にダウンロードをする場合、サーバ上のファイルと自分の持っているファイルの差分を転送するだけで最新版を手にいれることができるので、開発途中のプログラムの配布にも使われる。

通常、CVSサーバを用意してファイルの共有をする。CVSサーバにアクセスするCVSクライアント・プログラムは、コマンドラインのcvsを始め、GUIによるラッパーや、統合開発環境向けのプラグインが多数作られている。

CVSは、ネットワークでの使用を考慮した最初のソースコード管理システムであって、フリーウェアだったので、1990年代を通じて広く利用された。しかし、後述するような欠陥が明らかになるにつれ、これらの問題を改善した、SubversionPerforceGit などの新しいツールに取って代わられた。

RCSとの比較[編集]

CVSは元々、単一のファイルを対象としたバージョン管理ツールであるRCSの上に作られていたが、現在は依存はなくなった(リポジトリ内のデータ保持は依然として RCSのそれである)。$Id:$などのキーワードは、その名残である。更にRCSは、diffなどのUNIX系のテキスト処理プログラムの上に作られている。

RCSは、マルチユーザーシステム(1台のコンピュータに、複数のダム端末が接続され、CPUファイルシステムが共有されている)の上で、同じファイル/フォルダを共有した状態で使われたのに比べ、CVSではCVSサーバとして別のコンピュータ上に用意することもできる。

同一ファイルを複数人で同時編集した場合のコンフリクトに対するアプローチも異なる。RCSはファイルをロックする事で同時編集を禁止する。対するCVSでは、RCSのような強固なロックメカニズムは、もたない。すなわち、同時編集を許可する代りにコンフリクトが生じた場合、コミット時にマージ操作が必要とされる。

欠点[編集]

  • ファイル名の変更削除、ディレクトリ名の変更削除をうまく扱えない。
  • 異なる文字コード(JIS/SJIS/EUC)に対するサポートがない。
  • 基本的に個々のファイルの履歴はわかるが、リポジトリの履歴は簡単には知ることができない。
  • バイナリーファイルの扱いが下手で、リポジトリサイズの増大につながる。
  • 分散リポジトリをサポートしない。
  • アトミック・コミットをサポートしない。複数のファイルを同時にコミットした場合、CVSではそれぞれのファイルを(ごく短時間の間に)一つずつコミットしたものとして扱うため、アトミック性を満たすことができない。

等の点が挙げられる。

クライアント[編集]

その他のツール[編集]

  • ViewVC英語版[※ 2] - CVSおよびSubversionリポジトリをブラウザ上で閲覧するためのツール。SourceForge.netによって採用される。
  • Bonsai[※ 3] - Mozillaによって開発されたCVSリポジトリをブラウザ上で管理するためのツール。
  • OpenGrok英語版[※ 4] - ソースコードをブラウザ上で検索・参照するためのツール。CVSやSubversion, Git, Mercurial, Bazaarなど多数のバージョン管理システムをサポート。Javaで書かれている。
  • StatCVS英語版[※ 5] - CVSリポジトリから情報を取得して、表やグラフを用いたグラフィカルなレポートを作成するJavaで書かれたツール。

注釈[編集]

関連項目[編集]

外部リンク[編集]