减少.svn文件夹的大小


72

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

对于构建速度来说,这太棒了。但是,毫不奇怪,它确实增加了SVN结帐的大小。我们的主干目前位于〜22 GB。我意识到这不是Subversion的预期用途。但是我们目前没有其他选择。

但我想改善目前的状况。该.svn文件夹对磁盘上干线的大小做出了很大的贡献。二进制文件更新后,似乎在.svn文件夹中保留了几个基础。也就是说,如果二进制文件是4 GB,则中有一个副本.svn。如果已更新,则该.svn文件夹将保留原始基础以及新基础,并且针对该文件的最大容量为8 GB。

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

西蒙收到的答案是

  • 使用部分签出(对我来说这不起作用,因为我需要二进制文件)
  • 这不是Subversion的功能
  • 已经讨论过,但至少在Subversion 1.8之前不会成为功能。

幸运的是,subversion 1.8已发布。是否添加了此功能?

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


1
这并不是Subversion真正发挥作用的地方-您应该研究工件或联系来存储工件并使用构建脚本解析(获取)它们。
thekbb 2014年

可悲的是我们知道这一点。但是使用svn是如此方便。过去,在另一个项目中,我们雇用了Maven。但是,显然,这在许多人的嘴中留下了不良的味道。接下来是一个自定义工具,我只能将其描述为Maven(但是,它当然解决了所有Maven的问题)。那也留下了不好的味道。在我们的最新项目中,我们最终利用了svn。
Shane Gannon 2014年

Answers:


73

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

使用1.7时,原始存储已更改,在某些情况下,您实际上可能会发现情况比1.7之前更糟。现在,雌激素存储在由原始哈希表命名的文件中。因此,如果您有多个相同的文件,则不会存储重复的原始文件。但是,我们也不再清理原始数据。所以他们只是继续建立。您可以使用触发删除未使用的原始文件svn cleanup

有一点很重要,那就是保留未使用的原始数据,如果您在分支之间切换,我们将不再需要下载1.8中已经具有原始数据的内容。


谢谢本。我怀疑这将是答案。但是我希望否则我会认为。svn清理技巧很容易知道。我们推测它可能会去除多余的原始物质,但尚未经过测试。我喜欢md5仅用于保留唯一副本。但是不能删除旧副本“似乎”不正确。分支切换是此行为支持的方案。但是我“怀疑”更多的时候,旧的原始不会再被使用了。即它只会占用磁盘空间。虽然我们不建议使用svn,但这使它成为一个明显的缺点,我认为它也适用于普通项目。
Shane Gannon 2014年

我们同意,对此存在一个未解决的问题:subversion.tigris.org/issues/show_bug.cgi?
id=4071

2
很棒,再加上svn update --set-depth = exclude,这为我节省了12 GiB。
JonnyJD

8
哇,使用svn清理仅节省了21GB的空间。非常感谢!
NoAngel 2015年

我已经删除了很多本不应该进入版本控制的构建工件,并且想知道为什么Windows资源管理器仍报告约4GB的文件夹大小...运行的清除原始操作为我留下了约70MB实际有用的文件:)
grek40

38

对于使用TortoiseSVN客户端的“清理”命令而非svn cleanup命令的用户,.svn可以通过确保选中“真空原始副本”选项来减小文件夹大小:

在此处输入图片说明

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

[编辑]

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.