65

私の会社は、ソース管理のデファクトスタンダードとしてCVSを使用しています。しかし、多くの人がSVNの方が優れていると言うのを聞いたことがあります。

私はSVNが新しいことを知っていますが、それ以外は、その利点に慣れていません。

私が探しているのは、2つのシステムの優れた簡潔な比較であり、Java/Eclipse開発環境におけるそれぞれの長所と短所に注目しています。

4

12 に答える 12

65

CVSはファイルごとに変更を追跡するだけですが、SVNはコミット全体を新しいリビジョンとして追跡します。つまり、プロジェクトの履歴を追跡する方が簡単です。最新のソース管理ソフトウェアはすべてリビジョンの概念を使用しているため、CVSからの移行よりもSVNからの移行がはるかに簡単であるという事実を追加します。

アトミックコミットの問題もあります。私は一度しか遭遇しませんでしたが、CVSで一緒にコミットしている2人が互いに競合し、一部のデータを失い、クライアントを一貫性のない状態にする可能性があります。早期に検出された場合、データはまだどこかにあるため、これらの問題は大きな問題ではありませんが、ストレスの多い環境では苦痛になる可能性があります。

そして最後に、CVSを中心に開発されたツールはもう多くありません。GitやMercurialのような新しくて光沢のあるツールにはまだツールがありませんが、SVNはどのシステムにもかなり大きなアプリケーションベースを持っています。

2020年の編集:真剣に、この答えは現在12歳です。SVNを忘れて、他のみんなと同じようにGitを使いましょう!

于 2008-08-04T14:17:59.080 に答える
19

多くの比較の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
于 2008-08-04T14:09:54.993 に答える
15

SVN には、CVS に比べて 3 つの主な利点があります。

  • それはより速いです
  • バイナリ ファイルのバージョン管理をサポート
  • トランザクションコミットを追加します(すべてかゼロか)
于 2008-08-04T14:35:12.277 に答える
7

Subversionの本には、CVSとの重要な違いを詳しく説明した付録があり、決定に役立つ場合があります。2つのアプローチはほぼ同じ考えですが、SVNはCVSの長年の欠陥を修正するために特別に設計されたため、少なくとも理論的には、SVNが常により良い選択になります。

于 2008-08-04T14:14:14.877 に答える
4

EridiusによるGitの提案は2番目になりますが、Mercurialbazaarなどの他のDRCS(分散リビジョン管理システム)に拡張します。

これらの製品はかなり最近のものであり、ツールとそれらとの統合のレベルは現時点では低いようです(私の最初の調査に基づく)。私は彼らがそこにいるパワー開発者に最も適していたと思います(そしてここに;-))。

一方、CVSは現在あなたのために何をしていませんか?あなたの最初の質問から、あなたは本当に何も持っていません、「CVSはこれでひどいです、私は代わりに何を使うことができますか?」

潜在的な移行のコストとメリットを比較検討する必要があります。既存のプロジェクトの場合、正当化するのは難しいと思います。

于 2008-08-18T17:04:41.977 に答える
4

見逃してはならないのは生態系です。私はCVSNTショップで働いていましたが、デフォルトでSubVersionをサポートするオープンソースツールがどんどん見つかりました。

于 2008-08-18T17:22:05.733 に答える
2

ところで: CVSNT はアトミックコミットをサポートしています

于 2008-08-18T16:22:00.097 に答える
2

CVS と SVN を切り替えている途中の者として (最初にすべてのプロジェクトを cvs2svn に切り替え、その後、新しいプロジェクトでは svn のみを使用して移行することにしました)、私たちが抱えていた問題のいくつかを次に示します。

  • マージと分岐は大きく異なります。分岐とマージを頻繁に行う場合は、サーバーで SVN 1.5 を実行していない限り、いつ分岐したかを知る必要があります (これは Tortoise SVN ダイアログではあまり明確ではありません)。Michael は、分岐とマージは直感的だと言いますが、私は CVS を 10 年間使用した後、そうではないと主張します。
  • Linux で SVN サーバーを実行している場合、デフォルトで 1.4.x がインストールされるため、SA を svn 1.5 に移行するのが難しい場合があります。
  • TortoiseSVN での競合のマージは、(少なくとも私と私の同僚にとっては) TortoiseCVS ほど簡単でも明確でもありません。3 ペインのアプローチには慣れが必要であり、WinMerge (私の好みのマージ ツール) は 3 ペインのマージを行いません。
  • 注意: 私が読んだオンライン チュートリアルや雑誌記事の多くは、明らかにブランチとマージを行っていません。メイン リポジトリをhttps://svn.yoursvnserver.com/repos/YourProject/Trunkとして設定し、https:/ /svn.yoursvnserver.com/repos/YourProject/Branches/BranchX . リポジトリを間違った場所で開始した場合はクリーンアップできますが、混乱を招きます。
于 2008-09-04T17:44:16.510 に答える
1

SVN の代わりにGitを検討する必要があります。これは、非常に高速で非常に強力な DVCS です。SVN ほどユーザーフレンドリーではありませんが、その点では改善されており、習得するのはそれほど難しくありません。

于 2008-08-06T23:09:43.920 に答える
0

ええと、svn を素晴らしいものにしていると私が感じているいくつかのことがあります。

  1. SVN-Altassian るつぼの組み合わせは、レビューと品質チェックのはるかに優れた方法です
  2. 競合とマージの管理の改善
  3. チェックアウトの実行、コミットの実行などは明らかに高速です。
  4. アトミック コミットの問題 - CVS で一緒にコミットする 2 人が互いに競合し、データが失われ、コード ベースが一貫性のない状態になる可能性があります。

移行は、cvs2svn を使用して数時間で簡単に実行できます。

于 2016-09-18T14:01:16.107 に答える
0

最新のコードのみを CVS から SVN に移行し、現在の CVS リポジトリを凍結することもできます。これにより移行が容易になり、古い CVS リポジトリでレガシー リリースをビルドすることもできます。

于 2008-10-08T16:19:04.527 に答える