我读的颠复书,它是我清楚,颠复不存储个人的文件,但只有三角洲以最小化的磁盘空间。颠复也不一样的二进制文件以及(这是一个巨大的弱点CVS)。

但是我不了解确切的机制。当我提交一个文件会出现什么情况?

  1. 颠复仅存储比较(以及已有的旧版本)
  2. 颠复删除以前的版本,商店的新的文件完整,并创建一个反差异,以便"重新创建"的旧版本,如果需要的。
  3. 别的东西,我没有想到的。

第一种情况,似乎最合乎逻辑的。然而,这提出了另一个问题。如果我有一个版本库的文件1000承诺和新的开发,检查了一个干净的副本,那么颠复会,以获取原始版本(最初进口)和适用1000差异在此之前返回的结果。这是正确的?是有某种形式的缓存文件的最新版本保留以及吗?

基本上我在哪里可以找到信息上的svn存储库的内部?

更新: 很明显后台的颠复发挥很大的作用。在时间 或写作组采用选择1虽然传统使用的选项2。谢谢msemack!

有帮助吗?

解决方案

因为颠复的储存库的格式完全是内部的,他们都是免费的改变表示从一个修订的下一步。我认为目前的修订一般的商店反向三角洲(你的选择方案2),但也存储完成的快照周期性,因此它没有解决1000的比较之前返回的结果。

颠复1.6释放注意到有一个部分 文件系统储存的改进 有一些笔记本,并链接到其他来源。我只想说的详细信息的颠复数据存储是复杂的并且受到变化。

还有一个设计文件中的颠复来源的树描述了使用 跳过三角洲在颠复.通常, /说明/ 目录中包含了几个有用的文件,关于颠复内部。

其他提示

我认为下面的链接将有助于了解这些建筑

http://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/structure

颠复的设计 文件(这是相当过时,虽然)可以得到这个:

像许多其他修订控制系统、颠复存变化的差异。它不会让的完整副本节点;相反,它储存的最新版本作为一个完整文本,以及以前的修订版本作为一个连续的反差异(这个词"差异"使用松散的,这里–对文件,它意味着vdeltas,目录,这意味着一个的格式表示的更改目录).

我不认为改变。

此外,看到 泡泡法.

经常 版本 说明书可能会帮助你。

或如果你使用Berkeley DB, 这里的 说明书。

组采用反向三角洲储存的变化和 跳过三角洲 加速了一些行动,如果我理解正确的一切。

每一次你犯了一个变化, 仓库储存有新的修订 这个总库树, 标签的新的树有一个新的 修订的数量。当然,最大的 树是相同的修订 之前,除了你 改变。

新的修订数是一个 顺序的标签,适用于 整个新的树,而不仅仅是文件 和目录你碰到了在这 修订。但是,俗, 修订数是用来参考 改变致力于在该修订;例如,"改变r588" ("r588"的简写为"修订 588")真正的意思是"的区别 之间存储库树587和588", 或换一种方式,"作出的改变 到树587产生树588".

看看: 颠复常见问题

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top