我想了解subversion如何在FSFS中存储修订版,以及如何为给定的修订版号构建视图/ shapshot。
我从谷歌收集到的是FSFS是一个简单的目录结构,每个版本的子目录如下:
..svn/rev/0/
..svn/rev/1/
..svn/rev/2/
可能只在每个修订目录下记录了更改(增量)。那么这是否意味着在构建修订版N的视图/快照时,必须循环从0到N的所有增量?
对此资源的任何链接都非常赞赏。
由于
答案 0 :(得分:5)
Subversion将每个修订的所有增量存储在一个(平面)修订文件中。存储库内的每个文件/文件夹(称为“节点”)都有一个内部ID。
单个修订文件包含此特定提交的所有压缩增量,但是增量不是与先前版本相反,而是使用名为“跳过增量”的方案,以避免线性增长的搜索时间增长版本历史。
重要的是,FSFS使用前向增量而不是使用BDB后端的后向增量。 因此,FSFS在提交时速度更快,但在结账时速度更慢,Berkeley DB的性能特征是相反的。
您可以在SVN design note about FSFS内阅读更多内容。
答案 1 :(得分:3)
以下是FSFS结构参考的链接(包括文件格式说明):https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/structure