减小.svn文件夹的大小

Sha*_*non 63 svn size svn-checkout

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

对于构建速度来说这太棒了.但是,毫不奇怪,它确实增加了SVN结账大小.我们的主干目前约为22 GB.我意识到这不是Subversion的预期用法.但我们目前没有替代方案.

但我想改善现状.该.svn文件夹对磁盘上的中继大小有很大贡献.更新二进制文件时,它似乎在.svn文件夹中保留了几个基础.也就是说,如果一个二进制文件是4 GB,那么就有一个副本.svn.如果它已更新,则该.svn文件夹将保留原始基础加上新基础,并为该文件最多容量为8 GB.

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

西蒙收到的答案是

  • 使用部分结账(这对我来说不起作用,因为我需要二进制文件)
  • 这还不是Subversion的一个功能
  • 它已被讨论过,但至少在Subversion 1.8之前不会成为一个功能

幸运的是,subversion 1.8已经发布了.这个功能是否已添加?

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

Ben*_*ser 66

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

在1.7中,原始存储空间发生了变化,在某些情况下,您可能会看到情况比1.7之前更糟糕.Pristines现在存储在由pristine的哈希命名的文件中.因此,如果您有多个相同的文件,则不会存储重复的pristines.但是,我们也不再清理原始的了.所以他们只是继续积累.您可以触发未使用的pristines svn cleanup.

保持未使用的原始状态是有意义的,如果你在分支之间切换,我们就不再需要下载1.8中已经拥有pristine的东西了.

  • 哇刚刚使用svn清理节省了21GB的空间.非常感谢! (6认同)
  • 这很好,再加上[svn update --set-depth = exclude](http://stackoverflow.com/a/8446590/1904815),这为我节省了12 GiB. (2认同)

Ale*_*xei 31

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

在此输入图像描述

此外,建议在清理工作副本的顶级水平,指示在这里.

[编辑]

根据这个答案SVN更改日志,svn cleanup可以选择真空原始副本(/vacuum).默认情况下从1.8开始.从版本1.10开始,默认情况下不再执行此操作,但可以使用该命令运行svn cleanup --vacuum-pristines(请参阅此答案).