51

私は SVN と CVS の両方を少し使用しましたが、開始する新しいプロジェクトではいずれかを選択する必要があります。

両方を広く使用したことがある人は、長所と短所をいくつか教えてください。どちらが優れていると思いますか? 最高の学習リソースも高く評価されます。

これは小さなプロジェクト用で、1 人か 2 人の開発者が開始するだけです。

4

8 に答える 8

67

私は両方を使用しました。比較はありません。あなたはsvnが欲しいです。CVS を使用する唯一の理由は、現状を変えたくない管理者がいるレガシー システムに参入または引き継ぐためです。新しいプロジェクトを開始する場合、CVS が Subversion よりも優れていると主張することは事実上論理的に不可能です。

ぐぐってみると、CVS ではなく Subversion を使用する理由と比較がたくさん見つかるはずです。CVS に対する Subversion の利点のいくつか:

  • ファイルまたはディレクトリをきれいに移動または名前変更できます
  • アトミックコミット
  • 「安価な」コピーと分岐
  • コミットはツリー全体の変更セットです (個々のファイルの履歴だけではありません)

以上のことをすべて述べた上で、Bazaar、Mercurial、git などの分散型 VCS のいくつかも調べることをお勧めします。私は個人的にすべてのプロジェクトで git を使用しています。

于 2008-10-28T23:51:31.167 に答える
22

Subversion は、CVS に対していくつかの実質的な利点があります。

  1. 良いリモート オプション http/https/svn vs pserver
  2. アトミックコミット
  3. ユビキタス ツールのサポート
  4. 名前を変更
  5. ディレクトリのバージョン管理

ただし、重大な欠点があります。最大の問題は、ブランチとタグが svn の第一級市民ではなく、慣例に従う単なるディレクトリであることです。実際の分岐とタグ付けの利点の一部を失うことに加えて (他のコメントで言及されています)、それが作成する最大の問題は、非常に簡単に失敗することです。

Subversion が構成ではなく規則を使用するということは、事前にリポジトリの構造について考え、全員がそれに従うようにする必要があることを意味します。そうしないと、リポジトリを理解するために必要なツールは言うまでもなく、将来の世代に害のある世界を作成します.

マージとミラーリングは、1.5 より前ではほとんど存在しませんでした (十分にサポートされていました)。1.5 はこれらの両方に対処するための措置を講じていますが、まだ改善の余地があります。Subversion でのマージは、依然として必要以上に困難です。

CVS 上の SVN はほとんど簡単です。ただし、少なくとも DVCS が提供するもの (Git、Hg、Bzr) や、予算が許せば優れた評判の商用ツール (Accurev、Perforce) があることを考慮しないことを忘れてはなりません。

Subversion はおそらく正しい選択ですが、最良の結果を得るには下調べをしなければなりません。Red Book http://svnbook.red-bean.com/から始めましょう

于 2008-10-29T01:51:12.860 に答える
14

ほとんどの場合、私は CVS ではなく Subversion を選択しますが、Subversion に欠けているものを知っておく必要があります。

  • CVS はタグとブランチを別のものと見なします。Subversion はそうではありません。これは、Subversion の上に構築されたサードパーティ ツール (ソース管理統合を備えた IDE など) は、違いを理解するのが難しいことを意味します。通常、タグとブランチがどこにあるかを伝えるために特別な構成を行う必要があり、ユーザーが特定のファイルシステムレイアウトに固執することを確認する必要があります.

  • Subversion はファイルを見て、誰かがそのファイルからブランチやタグを作成した時点を教えてくれません。CVSGraph などのツールは、この情報を使用してファイルの履歴のツリーを描画できます。Subversion でこれを行うには、すべてのブランチ/タグ ディレクトリを検索する必要がありますが、これをうまく行うツールは見たことがありません。

  • 私の経験では、CVS は以前から存在しており、サードパーティのツールはより安定しています。

于 2008-10-29T00:02:11.723 に答える
9

時代遅れと呼んでください。しかし、私は CVS での分岐/タグ付けモデルの方がずっと好きでした。

CVS では、ブランチとタグは別のものです。タグはリビジョンのラベルです。これらは、ファイルのPRODUCTIONタグをマークしてウェブサーバーに同期するなどの場合に非常に便利です。PRODUCTIONファイルを更新するためにマージする必要はありません。タグを移動するだけです。

ブランチは、メイン ファイルと同じ「名前空間」に存在します。特定のファイルのすべての mod を簡単に追跡できます。

SVN にはタグのようなものはありません。枝しかありません。タグが必要な場合は、ブランチを作成して、それをタグのふりをする必要があります。ブランチは基本的にファイルのコピーです。前回、ブランチ/マージに SVN を使用したとき、以前にブランチしたファイルを一緒にマージしたい場合は、そのリビジョンを記録する必要がありました (注: 私は SVN の専門家ではないため、これは変更されている可能性があります)。

そうは言っても、SVN は他のすべての点で優れていると思います。おそらく、CVS で新しいプロジェクトを開始するべきではありません。

于 2008-10-29T00:01:52.583 に答える
2

これには多くの答えが返ってくると思います。彼らはすべて同意するかもしれません。

これら 2 つの選択肢のうち、Subversion を使用することに疑問の余地はないと思います。Subversion は「より優れた CVS」として構築されたため、もはや誰も積極的に CVS を保守していません。Subversion には、履歴を失うことなくファイルの名前を変更および移動する機能があり、アトミック コミットをサポートし、より堅牢なリポジトリ形式を備え、より最新のアクセス方法を備え、より優れたサードパーティ ツールのサポートを備えており、リストは続きます。

于 2008-10-28T23:49:42.247 に答える
1

一般的に Subversion ..ただし、リソースの問題に注意する必要があります。

私がゲーム会社で働いていたとき、数百の小さなファイルを含むいくつかのディレクトリと、数百のメガ ファイルを含む他のディレクトリがありました。CVS から Subversion に切り替えたとき、レポをチェックアウトする速度が 1 時間から 4 ~ 5 時間に短縮されました。更新も大幅に遅くなりました。

これはほぼ確実に、ネイティブの csv pserver と比較して、http または ssh のいずれかを使用してファイル データを送信するためですが、ssh または webdav で svn をセットアップするのは非常に簡単であるため、人々はプロトコルのオーバーヘッドについて考えない傾向があります。ただし、ネイティブの svn プロトコルを使用することはできます。これにより、問題が軽減されるはずです。これは、私の古い会社ではテストしていません。

しばしば無視されるもう 1 つの問題は、ストレージ スペースです。Subversion はローカルで CVS の数倍のストレージを使用していることがわかりました。差分を高速化するためにリポジトリ データのローカル コピーを保存していることを思い出すようですが、リポジトリに数ギガバイトを保存しない限り、これは大きな問題にはなりません。

于 2009-03-02T23:45:23.650 に答える
1

Subversion は「より優れた CVS」のようなものです。ファイルとディレクトリの移動をうまく処理します。分岐サポートがありますが、分散型 VCS には劣ります。

git、bazaar、mercurial などの分散型 VCS の使用を検討することもできます。

編集:これは同様の質問へのリンクです

于 2008-10-28T23:49:35.603 に答える
1

私は 3.5 年間 Subversion を使用してきましたが、現在はソース管理に CVS を使用している別の会社に移りました。最初は、2 つの間に大きな違いはありませんが、マージ操作 (これが私の最大の関心事です) になると、CVS の方が優れた仕事をしたと言えます。SVN のブランチ/タグの概念はわかりにくいですが、CVS では非常に明確です。また、マージ (私の場合はブランチの統合) は、SVN よりも CVS の方がはるかに簡単です。CVS の弱点は、今のところ私の考えではアトミック コミットだけです。そうでなければ、それは良い選択です。

于 2012-08-16T04:27:25.863 に答える