【问题标题】:Version Control that Discards Old History丢弃旧历史的版本控制
【发布时间】:2011-08-19 19:55:22
【问题描述】:

我正在寻找一个版本控制系统,它可以保护我免受最近(不超过一周)可能犯的错误并丢弃其余的错误。有没有一种方法可以让这种自动清理变得非常容易?

为了记录,我使用的是 SVN,但我不是在问如何让 SVN 做到这一点,而是问是否有一个 VCS 可以让这简单

【问题讨论】:

  • 为什么?为什么要丢失有关历史修订的信息?
  • 每天创建一个文件夹。你工作 7 天后删除最旧的文件夹。 开玩笑
  • 丢弃历史有点违背了使用版本控制的目的。
  • @Doug:呵呵,我本来打算建议只使用 tar... :)
  • 1TB (1TB!!!) 的磁盘驱动器成本不到 100 美元。帮自己一个忙,买一个。如果你真的想这样做,那么创建一个 repo,使用一周,然后再创建一个并导入第一个的最新版本。将旧的 repo 保留一周以防万一,并每周重复此操作。

标签: git svn version-control history


【解决方案1】:

不要质疑你这样做的理由:

您必须能够使用 git 以多种方式执行此操作,以下是其中之一:

git fast-export master --since "1 week ago" | (cd ../newrepo.git && git init . && git fast-import && git checkout)

您导出上周的提交,导入新的存储库。如果您愿意,也可以在同一个仓库中执行此操作:

git fast-export master --since "1 week ago" | (rm -rf .git && git init . && git fast-import && git checkout)

我喜欢你如何在 Git 中指定 1 week agoyesterdaynow 等(http://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html)来引用修订。它真的很容易找到你想要的修订。

【讨论】:

    【解决方案2】:

    您可以使用 Subversion 来执行此操作。在本周末对某个位置执行 SVNADMIN dump 以保留您的存储库,然后从转储文件的 HEAD 执行 SVNDUMPFILTER 以创建一个新的存储库来替换您现有的存储库。

    这是一个屏幕截图来说明我的观点。

    根据需要每周重复一次

    最好的部分是你可以回到这些较旧的存储库并在(并且你会)意识到你需要超过一周的东西时恢复它们

    【讨论】:

    • 我目前无法对此进行测试,因为我的服务器上只安装了 svn,而且我现在不想使用 RDP。
    • 此解决方案在尝试恢复部分转储时会失败。 SVN 会抱怨缺少父目录
    • 你完全正确。导出 zip 并从导出的 HEAD 创建新的仓库可能会更正确。