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