CVSでは、リビジョン番号はファイルごとについていました。理由は、CVSはRCS ファイルにデータを格納していたからです。それぞれのファイルは RCSファイルをリポジトリに持ち、そのリポジトリは大雑把に言って、プロジェクト ツリーの構造と一致するようなレイアウトでした。
Subversionでは、リポジトリは一つのファイルシステムのように見えます。 それぞれのコミットはまったく新しいファイルシステムツリーを作ります。 要約して言うと、リポジトリとは、そのようなツリーが一列にたくさん並んだ もののことです。このようなツリーそれぞれは、一つのリビジョン番号でラベル 付けされています。誰かが「リビジョン 54」 と言うとき、彼らは特定 のツリー(そして間接的に、54番目のコミット後のファイルシステムの見え方) について語っています。
技術的には、「foo.c
のリビジョン 5」 という言い方は正しくありません。そうではなく、 「リビジョン 5 に出てくるfoo.c
」 と言うべきです。同様に、ファイルの変化についての前提に気をつけて ください。CVS では、リビジョン 5 とリビジョン 6 の foo.c
は常に異なっていました。Subversionでは リビジョン 5 と 6 では、たいていの場合foo.c
は変更されていません 。
Similarly, in CVS a tag or branch is an annotation on the file, or on the version information for that individual file, whereas in Subversion a tag or branch is a copy of an entire tree (by convention, into the /branches
or /tags
directories that appear at the top level of the repository, beside /trunk
). In the repository as a whole, many versions of each file may be visible: the latest version on each branch, every tagged version, and of course the latest version on the trunk itself. So, to refine the terms even further, one would often say 「foo.c
as it appears in /branches/REL1
in revision 5.」
これについての詳細はリビジョン項を見てください。