如何保持Mercurial存储库小?

Dim*_* C. 4 mercurial

我的中央存储库存储在一个8GB的USB记忆棒上.我不小心提交了一些大文件,因此存储库不再适用于棒.有没有办法纠正这种情况?

Ry4*_*ase 6

我投了catchyifyoutry的答案,因为他已经有了你可能会使用的步骤,但是这里有一个方便的列表.

首先,提醒一下.如果您已经将该存储库推送到半公共区域,并且人们已经撤出了存储库,那么下面的提示都不起作用.当他们接下来他们推,你拉你将原始的变更集以未经修改的形式返回.您唯一的办法是与每个拥有克隆的人交谈并要求他们删除并重新克隆.那就是说,列表:

如何删除您在事故中犯下的文件

  • 如果您尚未提取或提交任何其他内容:hg rollback将作为一个级别撤消
  • 如果你愿意丢掉最后的N个版本:hg clone -r -N repo-with-too-much repo-with-N-fewer changesets#example:hg clone -r -2 big-repo small-repo
  • 如果你的改变太久了,那么其中任何一个都没问题: hg convert --filemap myfilemap.txt too-big-repo new-repo

在最后一个案例中myfilemap.txt有:

exclude path/to/file/to/remove
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 这个clone -r案例在技术上要求包含修订提示-N的最小克隆,如果你有一个多枝的回购.pull -r为了克服其他非线性历史,需要添加所有行(每个头一个).
  • 使用该hg convert解决方案,将修改每个已修改变更集的哈希码及其所有后代.