减小.svn文件夹的大小

在我们的项目中,我们决定使用预先构build的二进制文件来缩短构build时间。 每周/每月我们创build一个稳定版本并将其提交到存储库。 构build使用这些二进制文件而不是从源代码构build所有东西。

为了build立速度,这是太棒了。 但是,毫不奇怪的是,这实际上增加了SVN签出的大小。 我们的行李箱目前位于〜22 GB。 我意识到这不是Subversion的预期用法。 但目前我们没有其他select。

但我想改善目前的情况。 .svn文件夹对磁盘上的主干大小做出了重大贡献。 当二进制文件被更新时,似乎在.svn文件夹中保留了几个基地。 也就是说,如果一个二进制文件是4 GB,则.svn文件中会有一个副本。 如果更新,那么.svn文件夹保存原始基础加上新的基础和最多8GB的文件。

是否有可能告诉Subversion不要在某些文件的.svn文件夹中保留一个基础? 通过谷歌我发现了一个类似的问题, 如何减less.svn文件夹的大小?

西蒙收到的答案是

  • 使用部分结帐(这不会为我工作,因为我需要二进制文件)
  • 这还不是Subversion的一个特性
  • 这是讨论,但不会是一个function,直到至lessSubversion 1.8

幸运的是,Subversion 1.8已经发布了。 是否添加了此function?

我没有注意到它在发行说明中 。 虽然“减less目录和财产储存”看起来很有希望。

在这一点上,没有办法摆脱存储原始数据的需要。 它被讨论过了,但实际上并不是一个容易解决的问题,因为有很多不同的用例情况会通过可选地删除来呈现。

原来的存储量在1.7之后发生了变化 ,在某些情况下,实际情况可能会比1.7之前的情况更糟糕。 现在,原始文件存储在由原始文件的散列命名的文件中。 所以如果你有多个相同的文件,你将不会有重复存储的原始数据。 但是,我们也不再清理原始的。 所以他们只是继续build立起来。 您可以触发未使用的pristines与svn cleanup

如果你在不同的分支之间切换,我们不必再下载你已经拥有1.8版本的东西了。

对于那些使用TortoiseSVN客户端的Cleanup命令而不是svn cleanup命令, .svn文件夹的大小可以通过确保选中Vacuum pristine copies选项来减less:

在这里输入图像说明

此外,build议在工作副本的顶层进行清理,如此处所示。

[编辑]

根据这个答案和SVN更改日志 , svn cleanup可以select真空原始副本( /vacuum )。 这是从1.8开始默认完成的。