【问题标题】:How to remove old SVN revisions如何删除旧的 SVN 版本
【发布时间】:2011-05-20 00:09:07
【问题描述】:

我们的 SVN 存储库接近 0.5 GB。我们的生产系统中的代码量还远远不够。

是否可以删除旧版本。我尝试了svn dump 的起始修订号,但无济于事。我无法将其导入干净的 SVN 存储库。

我们不需要超过一年的历史记录。

有什么想法吗?

【问题讨论】:

  • 您是否考虑过购买更大的硬盘?如今,1 TB 磁盘对于大多数公司来说都是负担得起的。
  • 对此不确定,但 SVN 是否会因为必须遍历所有转速才能确定 HEAD 文件实际上是什么而变慢? @Mark:通常一切的成本至少是两倍或三倍,因为需要冗余,然后是备份空间的成本。
  • @Nick:不,如果文件有更多修订版,SVN 不会减慢速度。 (SVN 项目已经自托管了 非常 很长时间,所以它一定是最古老的 SVN 存储库。如果许多旧版本会令人讨厌,SVN 开发人员自己会最先注意到.) 如果你在这上面浪费了 5 个小时,你就有了 1TB 磁盘的成本,包括复制数据和交换物理磁盘,还有足够的空间来摆弄一个 0.5TB 的外部备份磁盘。
  • @Wes 还请记住,结帐的空间是文件的 2 个副本(一个在 .svn 文件夹中,一个是实际的),并且 svn 存储库本身是高度压缩的 - 尽管如此,它会给您是一个大概的数字,您可以将其与一年前完整结帐的大小进行比较并查找大文件...

标签: svn disk


【解决方案1】:

您的企业怎么能负担得起在这方面浪费时间,而不是仅仅购买更大的磁盘,将这些东西移过来,然后继续工作? 1TB 的成本相当于 1-2 个工时加上移动数据和交换磁盘所需的时间。

【讨论】:

  • 嗯,我想每天晚上备份它
  • @Wes: 366 * 0.5 Gig
  • 首先,磁盘的成本远高于磁盘的成本。远程托管。其次,我很难让他们花 30 英镑买一本书。带宽也不是免费的,每次传输 1/2 演出的时间也不是微不足道的。哦,增长速度很疯狂。我们在第一年完成了大部分工作,回购的规模是 80 兆,一年后大约 500
  • 据说,远程托管已经完成,因为它比托管自己便宜?那么“它更昂贵,因为我们是远程托管”怎么可能成为一个有效的论点呢?
  • Wes 对删除旧 svn 修订版的可能性有一个明确的问题。 1/2GB 还是 1/2TB 有什么关系...
【解决方案2】:

您可以删除或更好地“缩小”您的 SVN 存储库的历史记录。假设您有 1000 个修订版,并且您想缩小到只有 r950-r10​​00 的修订版。您可以执行以下操作:

svnadmin dump /path/to/current/repo -r950:1000 > small_svn.dump
svnadmin create /path/to/new/repo
svnadmin load /path/to/new/repo < small_svn.dump

但是,有两个注意事项:

1st:你所有的标签和分支最终都会成为独立的副本,因此会比以前占用更多的空间(这可能会在一个更大的存储库中结束,你必须尝试) - 你可以使用 svndumpfilter 删除标签和分支,但是,你需要旧的存储库来获取这些标签/分支的信息。

第二次:如果您的分支留在新存储库中,所有合并信息将显示错误的修订,因为您的新存储库再次从修订 0 开始,并且所有分支都在版本历史记录中消失(由于 pt. 1)

更好的解决方案:

  • 查找导致存储库增长的修订(在存储库数据存储中搜索大文件,通常位于:/path/to/repo/db/revs/[0...X]) .
  • 检查这些修订的日志历史并找到负责的文件。
  • 如果您不需要这些文件,请通过 svndumpfilter 删除它们。
  • 教您的用户如何避免提交不必要的大文件。

否则您将不得不在几周后再次缩减您的存储库!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多