如何保持Mercurial存储库小?

时间:2010-07-20 10:03:48

标签: mercurial

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

3 个答案:

答案 0 :(得分: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

注意:

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

答案 1 :(得分:4)

如果提交真的是偶然的,你可以使用大文件回滚最后一次提交。 参见

hg help rollback

当然,如果你在此期间将其他重要的东西放在首位,那么这不起作用。 另一种方法是使用strip删除包含大文件的整个分支。

小心,在执行任何这些操作之前,请确保您了解自己在做什么!首先在测试存储库或克隆上测试命令。

答案 2 :(得分:-2)

永远不要在USB记忆棒上存储像代码存储库那样重要的东西。这是一个很快就要放弃所有代码的邀请!购买具有足够空间的外置硬盘和至少2个独立的磁盘,您可以镜像。将其永久存放在某处,不要随身携带。如果您需要从其他地方访问 - 使用安全的互联网连接远程访问您的硬盘。