CVSとSVNの主な違いは、CVSが無料のクライアントサーバーベースのバージョン管理システムであるのに対し、SVNはCVSより高度で新しいソフトウェアのバージョン管理システムであることです。
バージョン管理は、小規模なプログラムでは必須ではありませんが、大規模で複雑なエンタープライズ・アプリケーションを扱うには必要です。
ソースコードや関連ファイルに加えられた変更を保存するものです。
変更された内容はバージョンとして保存され、開発者は現在の状態と以前の状態の完全な概要を把握することができます。
CVSとSVNは、ソフトウェア開発で使用される2つのそのようなバージョン管理システムです。
CVSとは
CVS は Concurrent Versions System の略です。
これは、フリーのバージョン管理システムです。
これは、ファイルに加えられた変更を保存します。
したがって、開発者はバージョンを比較することができます。
これにより、複数の開発者が同じプロジェクトで同時に作業することができます。
また、チームメンバー間のコラボレーションを向上させます。
さらに、CVS はクライアント・サーバ・アーキテクチャに従って動作します。
サーバは、プロジェクトの現在のバージョンと以前のバージョンを保存します。
クライアントは、サーバーに接続し、プロジェクトの完全なコピーを取得し、それに作業することができます。
LANやインターネットは、クライアントとサーバーを接続するのに役立ちます。
開発者がローカルにしかいない場合、クライアントとサーバーの両方が同じマシンにあることもあります。
通常、サーバーは UNIX で動作し、クライアントは Windows や Linux などの OS プラットフォームで動作します。
さらに、CVSでは、開発者は自分の作業コピーに変更を加え、それをサーバに送信することができます。
クライアントは、updateコマンドを使って、自分のローカルコピーをサーバ上の最新バージョンに更新することができます。
したがって、常にプロジェクト全体をダウンロードする必要はありません。
また、プロジェクトのブランチを維持することができる。
さらに、同じファイルの異なるバージョンを効率的に保存するのに役立つデルタ圧縮があります。
SVNとは
SVNは、Apache Subversionの略称です。
分散型ソフトウェアバージョン管理システムです。
開発者がコードに変更を加えたり、ソースコード、Webページ、ドキュメントなどのファイルの現在と過去のバージョンを維持することができます。
Apache Software Foundation、Free Pascal、GCC、SourceForgeなど、様々なプロジェクトで利用されている。
SVNは様々な機能を備えています。
SVNは、ファイルのリネーム、コピー、移動、削除が可能で、リビジョン履歴を完全に保持することができます。
バイナリファイルのネイティブサポートを提供します。
C#、Java、Python、Perl、Ruby などの言語バインディングがあります。
SVNは、ブランチの追跡とマージを行うための「マージ追跡」機能を備えています。
SVN では、3 種類のリポジトリ保存が可能です。
それらは以下の通りです。
Berkeley DB (deprecated) – オリジナルのSVN開発ではこのパッケージが使われていました。
Berkeley DBの使用にはいくつかの制限があります。
プログラムがデータベースにアクセスすると、クラッシュしたり終了したりすることがあります。
データの損失はありません。
しかし、Berkeley DBがジャーナルを再生し、未解決のロックをクリーンアップする間、リポジトリはオフラインのままです。
シングルユーザーで動作するシングルサーバープロセスを使用することで、SVNとBerkeley DBリポジトリを安全に使用することができます。
FSFS – このリポジトリは、多数のファイルを持つディレクトリでBerkeley DBバックエンドよりも高速に動作します。
ロギングも少ない。
したがって、最小限のディスクスペースしか必要としません。
SVN 1.2以降、FSFCは新しいリポジトリのデフォルトデータストアとなりました。
これは、OSのファイルシステム内に直接コンテンツを保存します。
FSX – FSFSの新しいバージョンで、FSFSのいくつかの制限の代わりとして使用されます。
CVS と SVN の違い
定義
CVSは、ソフトウェア開発の分野において、無償のクライアント・サーバー型バージョン管理システムです。
これに対し、SVNはApacheライセンスのもとオープンソースとして配布されているソフトウェアバージョン管理システムです。
したがって、この点が CVS と SVN の主な違いです。
開発者
CVS は CVS チームによって開発され、SVN は Apache Software Foundation によって開発され ました。
の略です。
また、CVSはConcurrent Versions Systemの略で、SVNはApache Subversionの略です。
初期リリース
CVSは1990年に、SVNは2000年にリリースされました。
ライセンス
その上、CVSはGNU General Public Licenseであるのに対し、SVNはApache License 2.0です。
したがって、この点もCVSとSVNの違いです。
アトミックコミット
さらに、CVSはアトミックコミットをサポートしていません。
しかし、SVNはアトミックコミットをサポートしています。
名前の変更と移動
また、CVSとSVNのもう一つの違いは、CVSでは名前の変更と移動ができないのに対して、SVNでは名前の変更と移動ができることです。
ネットワークプロトコル
さらに、CVS は SSH をサポートし、SVN は HTTP と HTTPS をサポートしています。
結論
CVSとSVNは、ソフトウェア開発で使用される2つのバージョン管理システムです。
CVS と SVN の主な違いは、CVS が無料のクライアントサーバー型のバージョン管理システムであるのに対し、SVN は CVS よりも高度で新しいソフトウェアバージョン管理システムであることです。