从 Mercurial 存储库中删除不需要的历史记录的最简单方法

Easiest way to remove GBs of unwanted history from a mercurial repository

当我开始使用 Mercurial 时,我将所有 "research & resources" 存储在存储库中,其中包括 GB 的视频。这些大文件随时间累积,并跨变更集进行跟踪。

我最近 "removed" 来自存储库的这些文件夹,因为我想开源项目,这些只是个人资源,只会拖累存储库。

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

我认为最简单的方法是备份当前存储库,hg init 只包含核心项目文件的新存储库(从版本历史记录开始),然后用粉笔记下这个想法是否正确成为一种有趣的学习体验?

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

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

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

exclude path/to/largefiles  

也结账 hg help convert。不过,旧存储库和新存储库将类似地无关,就像由简单 hg init 创建的新存储库一样。但是你保留了你想保留的那部分历史和文件。