清理 Mercurial 存储库

Posted

技术标签:

【中文标题】清理 Mercurial 存储库【英文标题】:cleaning out a Mercurial Repository 【发布时间】:2009-12-14 02:08:31 【问题描述】:

在我的 hg repo 的历史记录中有一堆文件已被删除。它们导致 repo 变得相当大(其中一些是图像,以及项目早期的 sql 转储,以及其他本来就不应该提交的东西)。

我怎样才能善变地忘记这些东西并再次将我的存储库缩小到合理的大小?

我是否应该只复制文件(和 .hgignore)并创建一个新的 repo,同时存档旧的以供将来参考?

【问题讨论】:

MYYN 在下面给出了正确答案,但请注意,这样做会使任何人可能拥有的任何克隆都无效。由于您正在 EditingHistory,每个节点的 hashid 都会发生变化,因此之前推送或拉取的克隆会变得一团糟。 @Ry4an 很高兴知道 - 很高兴有这个免责声明 =)。也许我应该结合归档旧的 repo,并使用 MYYN 的解决方案来创建 repo 以供继续使用 - 保留历史,但仍然重新开始。幸运的是,野外没有多少克隆人。我们只需要为那些使用传统补丁 【参考方案1】:

见:

$ hg convert --help

...

$ hg convert --filemap fmap old new

其中文件 fmap 包含以下内容:

exclude path/to/file/to/purge

(src:https://www.mercurial-scm.org/pipermail/mercurial/2008-August/020721.html)

【讨论】:

以上是关于清理 Mercurial 存储库的主要内容,如果未能解决你的问题,请参考以下文章

为系统文件创建和使用Mercurial存储库

我如何自己为多个用户托管 Mercurial 存储库?

在 Mercurial 存储库中查找大文件

Mercurial:迁移到新的存储库结构 - 子存储库更新

如何为Mercurial最佳地配置中央存储库/多个中央存储库?

如何在 Mercurial 中更新现有克隆存储库的 URL