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

发布于 2024-09-19 01:22:10 字数 286 浏览 5 评论 0原文

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

我从谷歌搜索中了解到,FSFS 是一个简单的目录结构,每个修订版都有子目录,例如:

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

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

任何有关这方面的资源的链接都非常感谢。

谢谢

I'd like to understand how subversion stores revisions in FSFS, and how a view/shapshot is constructed for a given revision number.

What I have gleaned from Googling is that FSFS is a simple directory structure, with sub-directories for each revision like:

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

Presumably only the changes (deltas) are recorded under each revision directory. So does this mean that when constructing the view/snapshot for revision N, all the deltas from 0 to N have to be looped over?

Any links to resources on this much appreciated.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

扎心 2024-09-26 01:22:15

以下是 FSFS 结构参考的链接(包括文件格式描述): https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/struct

Here is a link to the FSFS structure reference (including file format description): https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/structure

归属感 2024-09-26 01:22:13

Subversion 将每个修订版的所有增量存储在一个(平面)修订版文件中。存储库内的每个文件/文件夹(称为“节点”)都有一个内部 ID。

单个修订文件由该特定提交的所有压缩增量组成,但是这些增量并不针对先前的修订,而是使用称为“跳过增量”的方案,以避免对不断增长的版本历史记录进行线性增长的搜索时间。

重要的是,FSFS 使用前向增量,而不是使用 BDB 后端的后向增量。
因此,FSFS 的提交速度更快,但签出速度较慢,Berkeley DB 的性能特征则相反。

您可以在关于 FSFS 的 SVN 设计说明中阅读更多内容。

Subversion stores all deltas of each revision in one single (flat) revision file. Each file/folder inside the repository (called a "node") has an internal ID.

A single revision file consists of all compressed deltas for this particular commit, however the deltas are not against the previous revision, but use a scheme called "skipped deltas" avoiding linear growing search time for growing version history.

Important is that FSFS uses forward deltas instead of backward deltas using the BDB-backend.
So FSFS is faster on commits, but slower on checkout, Berkeley DB's performance characteristic is other way around.

You can read a lot more inside SVN design note about FSFS.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文