2

我的存储库大小有问题,我的存储库变得失控,因为我们的项目组有一次决定将我们的构建也保留在 svn 中,每个二进制文件大约 30 MB,repo 的每日备份需要 4-5 GB在数百人签入之后。备份存储库并将其复制到每天备份的网络位置变得非常困难。

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

  • 我可以创建一个 svn 提交触发器,将构建压缩并复制到某个地方,而不是把它放到 svn 中吗?

  • 如何缩小我的回购规模?

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

4

2 回答 2

3

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

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

我可以创建一个 svn 提交触发器,将构建压缩并复制到某个地方,而不是把它放到 svn 中吗?

可能,但这是一个重大的黑客攻击,(可能)需要在每台具有存储库结帐的计算机上完成。如果您想在签出存储库时再次检索这些 zip,那就更麻烦了。

如何缩小我的回购规模?

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

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

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

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

但是,不要再将它存储在 VCS 中!

于 2012-12-04T09:04:23.937 回答
1

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

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

我可以创建一个 svn 提交触发器,将构建压缩并复制到某个地方,而不是把它放到 svn 中吗?

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

如何缩小我的回购规模?

创建转储,杀死转储中不需要的修订,恢复完善的转储

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

你不能用客户端工具来做,只能用 svnadmin-|dumpfilter-hacking dump

于 2012-12-04T17:54:07.157 回答