【问题标题】:Easiest way to remove GBs of unwanted history from a mercurial repository从 mercurial 存储库中删除 GB 不需要的历史记录的最简单方法
【发布时间】:2016-03-11 14:18:13
【问题描述】:

当我开始使用 Mercurial 时,我将我所有的“研究和资源”存储在存储库中,其中包括数 GB 的视频。这些大文件随着时间的推移而积累,并跨变更集进行跟踪。

我最近从存储库中“删除”了这些文件夹,因为我想开源该项目,而这些只是个人资源,只会拖累存储库。

但是,尽管将这些资源移出存储库,但所有视频仍存储在历史记录中。这使得将 repo 克隆到服务器非常缓慢,并且似乎不可能将其推送到 BitBucket。

我认为最简单的方法是备份当前存储库hg init 一个仅包含核心项目文件的新存储库(从版本历史记录重新开始),我认为这是正确的吗?学习经历?

【问题讨论】:

    标签: mercurial bitbucket


    【解决方案1】:

    当然可以创建一个全新的存储库。然而,历史也可能很有趣。您可以在旧存储库上使用hg convert,并在该过程中排除您不希望成为新存储库一部分的文件。然后,您可以共享由此创建的新精益存储库。

    hg convert --filemap FILEMAP old-repo new-repo
    

    其中FILEMAP 是一个包含转换规则的文件,例如

    exclude path/to/largefiles  
    

    也结帐hg help convert。不过,旧的和新的存储库将与由简单的hg init 创建的新存储库类似地不相关。但是您保留了您要保留的部分历史记录和文件。

    【讨论】:

    • 谢谢。如果我已经移动并重命名了这些文件夹几次,我将如何排除路径/到/大文件?我是否应该排除这些文件在回购历史期间所在的所有可能路径?
    • 我没有测试过自己,但可能是的。通过获取一个(或多个)文件的历史来检查以前的名称:hg log --follow FILENAME
    • 最后,虽然我有你,我应该备份旧仓库,还是 hg convert 不影响旧仓库?再次感谢。
    • 备份永远不会受到伤害。但是convert 就像clone 一个不触及原始回购的动作
    猜你喜欢
    • 2011-02-10
    • 2019-03-17
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2012-12-14
    相关资源
    最近更新 更多