kaz*_*aki 48 svn berkeley-db repository fsfs
我阅读了颠覆书,我很清楚,subversion不存储单个文件,只存储增量以便最小化磁盘空间.Subversion也对二进制文件做了同样的事情(这曾经是CVS的一个巨大弱点).
但是我不明白确切的机制.当我提交文件时会发生什么?
第一种情况似乎最合乎逻辑.然而,这提出了另一个问题.如果我在subversion存储库中有一个包含1000个提交的文件,而一个新的开发人员检查出一个干净的副本,那么subversion必须获取原始版本(初始导入)并在返回结果之前对此应用1000个差异.它是否正确?对于保存最新版本的文件,是否存在某种缓存?
基本上我在哪里可以找到有关svn存储库内部的信息?
更新:显然,颠覆的后端在这方面发挥了重要作用.当时或写FSFS使用选项1,而BDB使用选项2.谢谢msemack!
Gre*_*ill 14
因为Subversion的存储库格式完全是内部的,所以他们可以自由地将表示从一个修订更改为下一个修订.我相信当前版本通常会存储反向增量(您的选项2),但也会定期存储完整的快照,因此在返回结果之前不必解析1000个差异.
Subversion 1.6发行说明中有一个关于文件系统存储改进的部分,其中有一些关于此的注释,以及指向其他源的链接.可以说Subversion数据存储的细节很复杂,可能会有所变化.
Subversion源代码树中还有一个设计文档,描述了在Subversion中使用skip deltas.通常,/ notes /目录包含有关Subversion内部的几个有用文档.
从Subversion设计文档(虽然已经过时了),你可以得到这个:
与许多其他版本控制系统一样,Subversion将更改存储为差异.它没有完整的节点副本; 相反,它将最新版本存储为全文,以及之前的版本作为一系列反向差异存储("diff"一词在这里松散使用 - 对于文件,它表示vdeltas,对于目录,它表示表示更改为目录).
我认为自那以后没有改变.
另外,请参阅冒泡方法.
| 归档时间: |
|
| 查看次数: |
42368 次 |
| 最近记录: |