本手册旨在描述 Subversion 1.4。如果您正在运行较新版本的 Subversion,我们强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅与您的 Subversion 版本相对应的版本。

目录版本

Subversion 追踪的是树形结构,而不仅仅是文件内容。这是 Subversion 被编写用来替代 CVS 的最大原因之一。

以下是如何从 CVS 用户的角度来看:

让我们更详细地讨论最后一个观点。目录版本控制是一个难题;因为我们希望允许混合修订版本的工作副本,所以在我们滥用该模型的程度上存在一些限制。

从理论的角度来看,我们定义“目录 foo 的修订版本 5”是指目录条目和属性的特定集合。现在假设我们开始向 foo 中添加和删除文件,然后提交。说我们仍然拥有 foo 的修订版本 5 将是错误的。但是,如果我们在提交之后将 foo 的修订版本号递增,那也是错误的;可能还有其他我们尚未接收到的对 foo 的更改,因为我们还没有更新。

Subversion 通过在 .svn 区域中默默地跟踪已提交的添加和删除来解决这个问题。当您最终运行 svn update 时,所有帐目都会与存储库对账,并且目录的新修订版本号将被正确设置。 因此,只有在更新之后,您才能真正确定您拥有目录的“完美”修订版本。 在大多数情况下,您的工作副本将包含“不完美”的目录修订版本。

类似地,如果您尝试对目录提交属性更改,也会出现问题。通常情况下,提交会将工作目录的本地修订版本号递增。但同样,这将是一个错误,因为可能存在目录尚未拥有的添加或删除,因为尚未进行更新。 因此,您不能对目录提交属性更改,除非目录是最新的。

有关目录版本控制限制的更多讨论,请参阅 名为“混合修订版本的工作副本”的部分