本手册是为描述 Subversion 的 1.6.x 系列而编写的。如果您运行的是不同版本的 Subversion,强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅与您的 Subversion 版本相对应的文档版本。

修订号现在不同了

在 CVS 中,修订号是针对每个文件的。这是因为 CVS 将其数据存储在 RCS 文件中;每个文件在存储库中都有一个对应的 RCS 文件,存储库的布局大体上与项目树的结构相同。

在 Subversion 中,存储库看起来像一个单一的文件系统。每次提交都会产生一个全新的文件系统树;本质上,存储库是一个树数组。这些树中的每一棵都用一个唯一的修订号标记。当有人提到“修订版 54”时,他指的是特定的树(以及间接地,文件系统在第 54 次提交后的外观)。

从技术上讲,谈论“foo.c 的修订版 5”是不正确的。相反,应该说“foo.c 在修订版 5 中的外观”。此外,在对文件演变进行假设时要小心。在 CVS 中,foo.c 的修订版 5 和 6 始终不同。在 Subversion 中,foo.c 在修订版 5 和 6 之间很可能没有发生变化。

同样,在 CVS 中,标签或分支是针对文件或该单个文件的版本信息的注释,而在 Subversion 中,标签或分支是整个树的副本(按照惯例,位于存储库顶层的 /branches/tags 目录中,与 /trunk 并列)。在整个存储库中,每个文件的多个版本可能可见:每个分支上的最新版本、每个标记的版本,当然还有主干本身上的最新版本。因此,为了进一步细化术语,人们通常会说“foo.c 在修订版 5 的 /branches/REL1 中的外观”。

有关此主题的更多详细信息,请参阅 名为“修订版”的部分