私の会社は、ソース管理のデファクトスタンダードとしてCVSを使用しています。しかし、多くの人がSVNの方が優れていると言うのを聞いたことがあります。
私はSVNが新しいことを知っていますが、それ以外は、その利点に慣れていません。
私が探しているのは、2つのシステムの優れた簡潔な比較であり、Java/Eclipse開発環境におけるそれぞれの長所と短所に注目しています。
私の会社は、ソース管理のデファクトスタンダードとしてCVSを使用しています。しかし、多くの人がSVNの方が優れていると言うのを聞いたことがあります。
私はSVNが新しいことを知っていますが、それ以外は、その利点に慣れていません。
私が探しているのは、2つのシステムの優れた簡潔な比較であり、Java/Eclipse開発環境におけるそれぞれの長所と短所に注目しています。
CVSはファイルごとに変更を追跡するだけですが、SVNはコミット全体を新しいリビジョンとして追跡します。つまり、プロジェクトの履歴を追跡する方が簡単です。最新のソース管理ソフトウェアはすべてリビジョンの概念を使用しているため、CVSからの移行よりもSVNからの移行がはるかに簡単であるという事実を追加します。
アトミックコミットの問題もあります。私は一度しか遭遇しませんでしたが、CVSで一緒にコミットしている2人が互いに競合し、一部のデータを失い、クライアントを一貫性のない状態にする可能性があります。早期に検出された場合、データはまだどこかにあるため、これらの問題は大きな問題ではありませんが、ストレスの多い環境では苦痛になる可能性があります。
そして最後に、CVSを中心に開発されたツールはもう多くありません。GitやMercurialのような新しくて光沢のあるツールにはまだツールがありませんが、SVNはどのシステムにもかなり大きなアプリケーションベースを持っています。
2020年の編集:真剣に、この答えは現在12歳です。SVNを忘れて、他のみんなと同じようにGitを使いましょう!
多くの比較の1つ:
http://wiki.scummvm.org/index.php/CVS_vs_SVN
現在、これはそのプロジェクトに非常に固有ですが、一般的に多くのものが適用されます。
Pro Subversion:
- バージョン管理された名前変更/移動のサポート(CVSでは不可能):Fingolfin、Ender
- ディレクトリをネイティブにサポート:ディレクトリを削除することが可能で、バージョン管理されています:Fingolfin、Ender
- ファイルのプロパティはバージョン管理されています。これ以上の「実行可能ビット」地獄:フィンゴルフィン
- 全体的なリビジョン番号により、ビルドのバージョン管理と回帰テストがはるかに簡単になります:Ender、Fingolfin
- アトミックコミット:フィンゴルフィン
- 直感的な(ディレクトリベースの)分岐とタグ付け:Fingolfin
- より簡単なフックスクリプト(コミット前/コミット後など):SumthinWicked(コミット後のDoxygenに使用します)
- 競合するファイルの偶発的なコミットを防止します:Salty-horse、Fingolfin
- カスタムの「diff」コマンドのサポート:Fingolfin
- オフラインの違い、そしてそれらは瞬時です:sev
SVN には、CVS に比べて 3 つの主な利点があります。
Subversionの本には、CVSとの重要な違いを詳しく説明した付録があり、決定に役立つ場合があります。2つのアプローチはほぼ同じ考えですが、SVNはCVSの長年の欠陥を修正するために特別に設計されたため、少なくとも理論的には、SVNが常により良い選択になります。
EridiusによるGitの提案は2番目になりますが、Mercurialやbazaarなどの他のDRCS(分散リビジョン管理システム)に拡張します。
これらの製品はかなり最近のものであり、ツールとそれらとの統合のレベルは現時点では低いようです(私の最初の調査に基づく)。私は彼らがそこにいるパワー開発者に最も適していたと思います(そしてここに;-))。
一方、CVSは現在あなたのために何をしていませんか?あなたの最初の質問から、あなたは本当に何も持っていません、「CVSはこれでひどいです、私は代わりに何を使うことができますか?」
潜在的な移行のコストとメリットを比較検討する必要があります。既存のプロジェクトの場合、正当化するのは難しいと思います。
見逃してはならないのは生態系です。私はCVSNTショップで働いていましたが、デフォルトでSubVersionをサポートするオープンソースツールがどんどん見つかりました。
ところで: CVSNT はアトミックコミットをサポートしています
CVS と SVN を切り替えている途中の者として (最初にすべてのプロジェクトを cvs2svn に切り替え、その後、新しいプロジェクトでは svn のみを使用して移行することにしました)、私たちが抱えていた問題のいくつかを次に示します。
SVN の代わりにGitを検討する必要があります。これは、非常に高速で非常に強力な DVCS です。SVN ほどユーザーフレンドリーではありませんが、その点では改善されており、習得するのはそれほど難しくありません。
ええと、svn を素晴らしいものにしていると私が感じているいくつかのことがあります。
移行は、cvs2svn を使用して数時間で簡単に実行できます。
最新のコードのみを CVS から SVN に移行し、現在の CVS リポジトリを凍結することもできます。これにより移行が容易になり、古い CVS リポジトリでレガシー リリースをビルドすることもできます。