Concurrent Versions System
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Concurrent Versions System (並行ヴァージョンシステム) は、通常 CVS と略される、テキストファイルの変更を記録し管理するバージョン管理システムで、主にソフトウェアの開発に伴うソースコードを始めとしたテキストファイルの共有(保存、取り出し)に使われる。テキストファイルの枝分かれした版を管理する事ができる。自由なソフトウェアでもある。
枝分かれ(並行ヴァージョン)の機能を使わなくても、ファイルの直線的な追加改変を追いかけるのに使うことが出来る。特にダウンロードをする場合、サーバ上のファイルと自分の持っているファイルの差分のみを転送するだけで最新版を手にいれることが出来るため、開発途中のプログラムの配布にも使われる。
通常、CVSサーバを用意してファイルの共有をする。 CVSサーバにアクセスするCVSクライアント・プログラムは、コマンドラインの cvs を始め、GUI によるラッパーや、IDE 向けのプラグインが多数作られている。
CVSは元々、単一のファイルを対象としたバージョン管理ツールであるRCS(Revision Control System - レヴィジョン管理システム)の上に作られていたが、現在は依存はなくなった(リポジトリ内のデータ保持は依然として RCS のそれである)。 $Id:$などのキーワードは、その名残である。 更にRCSは、diffなどのUNIX系のテキスト処理プログラムの上に作られている。
RCSは、マルチユーザーシステム(一台のコンピュータに、複数のダム端末が接続され、CPUやファイルシステムが共有されている)の上で、同じファイル/フォルダを共有した状態で使われたのに比べ、CVSは通常CVSサーバとして別のコンピュータ上に用意される。 同一ファイルを複数人で同時編集した場合のコンフリクトに対するアプローチも異る。 RCS はファイルをロックする事で同時編集を禁止する。 対する CVS では同時編集を許可する代りにコンフリクトが生じた場合、 コミット時にマージを行なう。 このため多人数で共同して開発を行う際には RCS よりもスムーズな作業が期待できる。
CVS の欠点は
- ファイル名の変更を行うとバージョンの履歴を引き継げない。
- 異なる文字コード(JIS/SJIS/EUC)に対するサポートがない。
等の点が挙げられる。
[編集] その他のソースコード管理システムの実装
- SCCS(Source Code Control System) - ソースコード管理システム。AT&Tが開発したRCSに対応するプログラム。
- BitKeeper - Linuxカーネルの開発に使われるようになって、有名になった。さらに複雑な操作ができる。フリーソフトウェアではない。
- Subversion
- arch
- darcs
- VisualSourceSafe - Microsoft のソース管理システム。プロジェクト指向の管理を行う。
- git
- DCVS - cvsをベースに分散開発できるように拡張したもの。