与工作副本相比,Subversion存储库的文件大小较小?

Mic*_*all 11 svn version-control repository

我正在使用Mac上的Versions应用程序来处理我的文件的SVN存储库.我的工作副本大约是6 MB,但我的存储库只有1.4 MB,我在存储库中持有五个版本!

怎么会这样?

Naw*_*Man 18

SVN压缩一个版本的代码,每个版本之间的差异.这就是它没有占用太多空间的原因.

为了保持存储库的小型化,Subversion在存储库本身中使用了deltification(或deltified storage).整理涉及将一大块数据的表示编码为与一些其他数据块的差异的集合.如果这两个数据非常相似,那么这种划分可以节省存储空间 - 而不是占用等于原始数据大小的空间,它只占用足够的空间来说,"我看起来就像这样这里的其他数据,除了以下几项更改."结果是大多数存储库数据往往很笨重 - 即版本化文件的内容 - 存储的尺寸比原始文件小得多 - 该数据的文本表示.对于使用Subversion 1.4或更高版本创建的存储库,节省的空间甚至更好 - 现在文件内容的全文表示本身就是压缩的.

更多细节可以在这里找到


Wim*_*nen 8

Nawaman的回答已经解释了存储库中的数据非常有效地压缩了.

故事的另一半是subversion将每个文件的原始副本保存.svn在工作副本的文件夹中.这使得subversion可以处理svn statussvn diff命令而无需联系存储库服务器,但它会使工作副本的大小翻倍.


180*_*ION 5

您的工作副本通常包含许多其他临时文件,例如目标代码和预编译头文件,这些文件不需要进行版本控制.我想如果你清理工作副本,或者做一个新的结账,它会小得多.

  • 这是事实,但由于Nawaman和wcoenen解释的原因,即使是新签出的没有生成文件的清洁工作副本(例如预编译头文件和目标代码)也可能比存储库大得多:工作副本有两个副本每个文件都是未压缩的(工作和原始文件),而存储库有每个文件的1个压缩副本+ deltafied更改(如果更改已本地化,则可能非常小). (2认同)