本文档正在编写中——内容可能随时更改——并且可能无法准确描述任何已发布的 Apache™ Subversion® 软件版本。将此页面添加为书签或以其他方式向他人推荐此页面可能不是明智之举。请访问 https://svnbook.subversion.org.cn/ 获取此书的稳定版本。
在 CVS 中,修订版本号是针对每个文件的。这是因为 CVS 将其数据存储在 RCS 文件中;每个文件在存储库中都有一个相应的 RCS 文件,存储库大致按照项目的树状结构进行布局。
在 Subversion 中,存储库看起来像一个单一文件系统。每次提交都会生成一个全新的文件系统树;本质上,存储库是树的数组。每个树都用一个唯一的修订版本号进行标记。当有人谈论 “修订版本 54” 时,他指的是特定树(以及间接地,第 54 次提交后文件系统的状态)。
从技术上讲,谈论 “文件 foo.c
的修订版本 5” 是无效的。相反,应该说 “修订版本 5 中的文件 foo.c
”。此外,在对文件演变过程进行假设时要谨慎。在 CVS 中,foo.c
的修订版本 5 和 6 总是不一样。在 Subversion 中,修订版本 5 和 6 之间 foo.c
很可能 没有 发生更改。
类似地,在 CVS 中,标签或分支是针对文件或该单个文件的版本信息的注释,而在 Subversion 中,标签或分支是整个树的副本(按照惯例,位于存储库顶层的 branches/
或 tags/
目录中,与 trunk/
并列)。在整个存储库中,每个文件的多个版本可能是可见的:每个分支上的最新版本、每个已标记版本,当然还有主干本身上的最新版本。因此,为了进一步细化这些术语,通常会说 “修订版本 5 中 branches/REL1
中的文件 foo.c
”
有关此主题的更多详细信息,请参阅 名为“修订版本”的部分。