2009-05-18 24 views

答えて

7

異なるVCSは異なるアプローチを使用しています。たとえば、CVSは、あなたがコミットしたファイルごとにサーバ上にファイルを作成します。これは基本的にRCS形式のファイルです。 CVSは、ディレクトリサブツリー内の多くのファイルに対してRCSコマンドを実行するRCSのラッパーにすぎません(RCSは単一ファイルでしか動作できません)。

RCSファイルには、変更内容(バージョン番号、チェックインメッセージ、および変更された量)の一覧が含まれています。その後、現在のHEADバージョンのコピーが来ます。残りのファイルは、バージョン間の差異(long explanation)です。

このようにして、CVSは(最も頻繁に要求される)HEADバージョンをすぐに返すことができ、他のバージョンを計算することができます。

CVSは検証を行いません。ファイルの1つが破損した場合は、バックアップが必要です。 CVSはRCSに基づいているので、ディレクトリをバージョンアップすることも、名前の変更を追跡することもできません。 CVSとRCSは標準diff(1)コマンドを使用して差分を作成します。

Subversion(SVN)は類似して動作しますが、ディレクトリと名前のバージョンを追加します。さらに、SVNはより小さいリポジトリを提供するより良い差分アルゴリズム(xdelta)を使用します。

Gitの動作については、hereを参照してください。

関連する問題