我想了解Subversion如何在FSFS中存储修订,以及如何为给定的修订号构造视图/快照。
我从Googling收集到的信息是,FSFS是一个简单的目录结构,每个修订的子目录如下:
..svn/rev/0/
..svn/rev/1/
..svn/rev/2/
大概只有更改(增量)记录在每个修订目录下。那么,这是否意味着在为修订版N构造视图/快照时,必须循环从0到N的所有增量?
任何对此资源的链接都表示赞赏。
谢谢
最佳答案
Subversion将每个修订的所有增量存储在一个(固定)修订文件中。存储库中的每个文件/文件夹(称为“节点”)都有一个内部ID。
单个修订文件包含针对此特定提交的所有压缩增量,但是这些增量与先前的修订不冲突,而是使用一种称为“跳过增量”的方案,以避免线性增长的搜索时间来获取版本历史。
重要的是,FSFS使用正向增量而不是使用BDB后端的反向增量。
因此,FSFS的提交速度更快,而结帐速度较慢,伯克利DB的性能特征则相反。
您可以在SVN design note about FSFS中阅读更多内容。