我阅读了颠覆书,我很清楚颠覆不存储单个文件,而只存储增量以最小化磁盘空间。Subversion 也对二进制文件做同样的事情(这曾经是 CVS 的一个巨大弱点)。
但是我不明白确切的机制。当我提交文件时会发生什么?
- Subversion 仅存储差异(并且已经有旧版本)
- Subversion 删除以前的版本,完整地存储新文件并创建反向差异,以便在需要时“重新创建”旧版本。
- 还有一些我没有想到的。
第一种情况似乎是最合乎逻辑的。然而,这提出了另一个问题。如果我在 subversion 存储库中有一个包含 1000 次提交的文件并且新开发人员签出了一个干净的副本,那么 subversion 必须获取原始版本(初始导入)并在返回结果之前对其应用 1000 个差异。它是否正确?是否对保存最新版本的文件进行某种缓存?
基本上我在哪里可以找到关于 svn 存储库内部的信息?
更新:显然,颠覆的后端在这方面发挥了重要作用。当时或编写 FSFS 使用选项 1,而 BDB 使用选项 2。感谢 msemack!