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

时间:2009-09-27 23:32:53

标签: svn version-control repository

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

这怎么可能?

4 个答案:

答案 0 :(得分:18)

SVN会压缩您的代码的一个版本,即每个版本之间的差异。这就是为什么它没有占用太多空间。

  

要保持存储库小,   Subversion使用deltification(或   内部存储(deltified storage)   存储库本身。增量化   涉及编码表示   作为一个集合的一大块数据   与其他一些块的差异   数据的。如果这两个数据是   非常相似,这种神圣化   导致存储节省   令人满意的大块而不是占用   空间等于的大小   原始数据,它只占用足够的数据   空间说,“我看起来就像这样   这里的其他数据,除了   进行以下几项修改。“   结果就是大部分   存储库数据往往是   笨重的,即内容   版本化的文件 - 存储在很多   尺寸比原来小   该数据的全文表示。   对于使用创建的存储库   Subversion 1.4或更高版本的空间   节约甚至更好 - 现在那些   文件的全文表示   内容本身就是压缩的。

可以找到更多详细信息here

答案 1 :(得分:8)

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

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

答案 2 :(得分:5)

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

答案 3 :(得分:2)

以下是我能想到的几个原因 - svn将您的修订版本存储为更改集而不是版本化文件。 - svn在其后端(FSFS / BDB)中存储数据,后者具有一些减小大小的压缩技术。如果存储库具有更多基于文本的文件,则压缩越多,因此可以预期大小将急剧减小。 - 为了支持少量命令(如svn info,diff等)而没有网络连接(也有更快的结果),svn在.svn目录中保留了一些额外的信息。额外信息包括整个工作副本的副本。