Subversion FSFS - 如何将修订存储在存储库中?

时间:2010-09-12 21:07:33

标签: svn repository berkeley-db fsfs

我想了解subversion如何在FSFS中存储修订版,以及如何为给定的修订版号构建视图/ shapshot。

我从谷歌收集到的是FSFS是一个简单的目录结构,每个版本的子目录如下:

..svn/rev/0/
..svn/rev/1/
..svn/rev/2/

可能只在每个修订目录下记录了更改(增量)。那么这是否意味着在构建修订版N的视图/快照时,必须循环从0到N的所有增量?

对此资源的任何链接都非常赞赏。

由于

2 个答案:

答案 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