由于构建,svn存储库失控

时间:2012-12-04 08:52:13

标签: svn build backup svnadmin svndumpfilter

我的存储库大小有问题,我的存储库失去控制,因为我们的项目组一度决定将我们的构建保留在svn中,每个二进制文件大约30 MB,每日备份的回购需要4经过几百次登记后,已经达到-5 GB了。对备份进行备份并将其复制到每天备份的网络位置变得非常困难。

  • 保留每个构建的备份的最佳做法是什么?

  • 我可以创建一个svn提交触发器来解压缩并在某处复制构建而不是将其放到svn中吗?

  • 如何缩小我的回购尺寸?

  • 我可以用svn命令删除一些旧的二进制文件吗?

2 个答案:

答案 0 :(得分:3)

  

保留每个构建的备份的最佳做法是什么?

不要这样做。 SVN(以及所有/大多数其他版本控制系统(VCS))旨在通过使用/存储差异来有效地存储文本文档(源代码)。这对二进制文件不起作用。

  

我可以创建一个svn提交触发器来拉链并在某处复制构建而不是将它放到svn吗?

可能,但这是一个主要的黑客攻击(可能)需要在每个有存储库结账的计算机上完成。 如果你想在结账时再次检索这些拉链,那就更麻烦了。

  

如何缩小回购尺寸?

     

我可以用svn命令删除一些旧的二进制文件吗?

一旦您向SVN(以及大多数其他VCS)提交了某些内容,您就无法修改历史记录。 也就是说,您可以创建一个新的存储库,可以将所有更改复制到它(有一些工具可以保存提交消息)。也许有可能重新发布所有内容(没有构建)并从那时起使用该存储库。 (确保所有项目合作伙伴签出新的存储库以防止出现问题)

正如您所注意到的,将所有派生文件(版本)存储在VCS中是“不是好事”。为了重现性,您可以存储构建信息,例如已使用工具的版本号。因此,如果需要,始终可以重建特定的构建。

使用仅包含最新版本的共享位置,以便所有项目合作伙伴都能够查看/尝试此最新版本。

但是,不要再把它存放在VCS中了!

答案 1 :(得分:1)

  

保留每个构建的备份的最佳做法是什么?

为每项任务使用正确的工具。 源代码控制可以管理构建的工件,但是 - 只是很差。使用工件管理器完成此工作

  

我可以创建一个svn提交触发器来解压缩并在某处复制构建而不是将其放到svn中吗?

是的,理论上在钩子中你可以做任何事情(构建,存档,部署),但是(再次)特殊工具可以为最终用户更轻松,更顺利地做到这一点(阅读“Jenkins”, “Maven的”)

  

如何缩小回购邮件大小?

创建转储,在转储中杀死不需要的修订,恢复抛光转储

  

我可以用svn命令删除一些旧的二进制文件吗?

您不能使用客户端工具,只能使用svnadmin- | dumpfilter-hacking dump