在 CVS 中,版本号是针对每个文件的,这是因为 CVS 使用 RCS 文件保存数据,每个文件都在版本库有一个对应的 RCS 文件,版本库几乎就是根据项目树的结构创建。
在 Subversion 中,版本库看起来像是一个单独的文件系统,每次提交导致一个新的文件系统树;本质上,版本库是一系列树,每棵树都有一个版本号。当有人谈论“版本 54” 时,他们是在讨论一个特定的树(并且间接来说,文件系统在提交 54 次之后的样子)。
技术上讲,谈论“文件 foo.c
的版本 5” 是不正确的,相反,一个人会说
“foo.c
在版本 5 出现”。同样,我们在假定文件的进展时也要小心,在 CVS
中,文件 foo.c
的版本 5 和 6 一定是不同的,在 Subversion
中,foo.c
可能在修订版本 5 和 6 之间没有改变。
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.”
关于此专题的更多细节,请参见第 2.2 节 “修订版本”。