在我们的项目中,我们决定使用预先构建的二进制文件来缩短构建时间。每周/每月我们创建一个稳定版本并将其提交到存储库。构建使用这些二进制文件而不是从源代码构建所有内容。
对于构建速度来说这太棒了。但是,毫不奇怪,它确实增加了SVN结账大小。我们的主干目前约为22 GB。我意识到这不是Subversion的预期用法。但目前我们没有替代方案。
但我想改善现状。 .svn
文件夹对磁盘上的中继大小有很大贡献。更新二进制文件时,它似乎在.svn文件夹中保留了几个基础。也就是说,如果二进制文件是4 GB,则.svn
中有一个副本。如果已更新,则.svn
文件夹将保留原始基础加上新基础,并为该文件最多提供8 GB。
是否有可能告诉Subversion不要在.svn
文件夹中为某些文件保留基础?通过谷歌,我发现了一个类似的问题, How to decrease .svn folder size? 。
Simon收到的答案是
幸运的是,subversion 1.8已经发布了。这个功能是否已添加?
我在the release notes中没有注意到它。虽然“目录和财产存储减少”看起来很有希望。
答案 0 :(得分:63)
此时无法摆脱存储原始状态的需要。它已经被讨论过了,但它实际上并不是一个容易解决的问题,因为有很多不同的用例情况可以选择性地删除它们。
With 1.7 the pristine storage was changed在某些情况下,您可能会看到情况比1.7之前更糟糕。 Pristines现在存储在由pristine的哈希命名的文件中。因此,如果您有多个相同的文件,则不会存储重复的pristines。但是,我们也不再清理原始的了。所以他们只是继续积累。您可以使用svn cleanup
触发未使用的pristines。
保持未使用的原始状态是有意义的,如果你在分支之间切换,我们就不再需要在1.8中下载你已经拥有pristine的东西了。
答案 1 :(得分:28)
对于使用TortoiseSVN客户端的清理命令而不是svn cleanup
命令的用户,可以通过确保选中真空原始副本选项来减少.svn
文件夹大小:
此外,建议在工作副本的顶层进行清理,如here所示。
<强> [编辑] 强>
根据this answer和SVN change log,svn cleanup
可以选择真空原始副本(/vacuum
)。默认情况下从1.8开始。从版本1.10开始,默认情况下不再执行此操作,但可以使用命令svn cleanup --vacuum-pristines
运行(请参阅this answer)。