1

前言

我的 SVN 托管由第三方提供,这将我的使用量限制为 300MB。由于该项目规模适中,我从没想过这会是个问题。一旦应用程序投入生产,我意识到我需要某种备份机制。所以我写了一个shell脚本来导出数据库并压缩用户上传的文件。然后我将 .sql 和 .zip 文件都提交到 SVN(SVN 服务器与应用程序不在同一台机器上运行)。

然后今天我注意到我已经超过了配额。我很快意识到这一定是因为备份。

最后......问题

因为 .zip 是一个二进制文件,我猜每次提交时都会将整个文件添加到存储库中(而对于文本文件,只添加差异)?.zip 文件目前约为 60MB,因此鉴于备份脚本每天运行,我只能在 SVN 中存储 5 天的备份。

无论如何,我计划通过以下方式改善这种情况:

  • 更改备份脚本,以便将 .zip 的大小与 SVN 中的最新 .zip 的大小进行比较,并且仅在它们不同时才提交。如果自上次运行备份以来没有用户上传文件,则两者大小相同

  • 从 SVN 中删除所有旧版本的 .zip 文件以释放一些配额。但是,我不知道这是否真的可能?我的理解是,即使我从工作副本中删除文件并提交删除,文件也会从存储库的 HEAD 中删除,但所有之前提交的版本仍然存在(用完我宝贵的配额)。

有什么方法可以永久删除所有旧版本的 .zip,并使用上述更有效的备份策略重新开始。

4

1 回答 1

2

您应该执行以下操作来解决这种情况:

  • 如果有可能,请从存储库中删除所有提交的 zip 文件。请参阅SVN 红皮书中的Filtering Repository History一章。
  • 以后,请将您的 zip 文件保存在其他位置。即使二进制差异运行良好,将大二进制文件添加到 SVN 存储库也不是一个好主意。

如果包含二进制数据,200 MB 并不多。如果它只是源代码,它可能就足够了。

于 2012-05-31T15:13:33.543 回答