Mercurial永久删除?

3

我提交了一些第三方工具,后来决定不使用它们并从hg中删除了它们。

我不喜欢的是它们仍然保存在历史记录中。通常情况下这是好事,但对于这种特殊情况来说 - 这只是浪费空间。

有哪些意图干扰hg存储库历史记录并清理它的选项?


根据目前的答案,看起来您的情况不够极端,不需要采取任何行动。也就是说,治疗方法比疾病更糟糕...除非您将巨大的文件推入存储库... - Michael Haren
@Michael,我同意你的看法。Cure看起来相当糟糕。期待完成一些合并并初始化新存储库。 - Arnis Lapsa
2个回答

4
如果您不介意切换到新的存储库,那么最好使用转换扩展。您可以传递一个文件映射来排除任何要排除的文件,并为您创建一个新的存储库,没有任何与您的文件有关的引用。当然,这意味着需要克隆一个新的工作副本。这意味着每个存储库都需要一个新的工作副本,因此如果周围有很多工作副本,请准备做很多工作。

1
使用文件映射进行转换确实是正确的答案,但我想在“如果您不介意切换到新存储库”的周围画一个大红框。Mercurial中更改集的内容(以及其他内容)会产生其哈希值,更改这些内容会更改哈希值。因此,如果您编辑历史记录,则您拥有的每个克隆都将无效,并且还需要切换到存储库才能推送/拉取而不会重复一切。Lennaert理解这一点,但我想确保您也了解,因为轻率地编辑历史记录并不是什么好事 - 它必须在所有地方都完成。 - Ry4an Brase
已经看到的,不能不看......无论如何 - 谢谢。 - Arnis Lapsa

3

激活mercurial队列扩展并使用“hg strip”重写历史。如果您有任何克隆,请推送其更改并销毁它们,执行“hg strip”并再次克隆。

如果有无法控制的克隆,则所有赌注都将关闭。我会使用“convert”扩展重新构建存储库,执行“hg strip”,并替换旧存储库。当尝试推送/拉取时,旧克隆将收到错误,因为新存储库具有不同的UUID,因此用户将知道他们必须销毁+重新克隆。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接