【问题标题】:delete files in history to save some space in mercurial删除历史记录中的文件以节省 mercurial 中的一些空间
【发布时间】:2011-04-24 15:03:33
【问题描述】:

好的,当我年轻的时候,我将几个大文件(如资源文件、dll 等)放在我的 mercurial repos 中。我发现它的大小太大了,我不能轻易将它推入bitbucket,

有什么方法可以轻松删除此文件历史记录?

我将所有这些文件放在 /res 和 /dll 路径中。

编辑:

这是一个解决方案,但它会删除部分历史记录,所以也许有更好的解决方案。 Mercurial Remove History

【问题讨论】:

标签: mercurial


【解决方案1】:

最好的办法是使用转换扩展,但是警告你最终会得到一个完全不同的 repo。每个哈希值都不同,每个克隆的人都需要删除他们的克隆并重新克隆。

也就是说,这就是你要做的:

创建一个名为 filemap.txt 的文件映射文件,其中包含:

exclude res
exclude dll

然后运行这个命令:

hg convert --filemap filemap.txt your-source-repository your-destination-repository

例如:

hg convert --filemap filemap.txt /home/you/repos/bloatedrepo /home/you/repos/slenderrepo

这将为您提供一个全新的存储库,其中包含您的所有历史记录,但 /res 和 /dll 中的任何文件的历史记录除外,但就 mercurial(和 bitbucket)而言,这将是一个新的、不相关的存储库。

【讨论】:

  • 由于某种原因找不到转换开关,是否已将其删除?
  • 很糟糕,您必须在 mercurial.ini 中手动添加以下内容才能正常工作 [extensions] hgext.convert=
  • 看起来不错,但如果我想删除特定文件,它仍然有效吗?说一个特定的dll?你能用吗?:排除 MyDll.dll
  • 是的。仅当您完成后拥有与原始存储库无关的不同存储库时,这才是“好方法”,Mercurial 可以告诉您。因此,与您一起工作的每个人都必须删除并重新克隆。这对于小型团队或早期的团队来说很好,但在更大的环境中几乎是“最后的手段”之类的事情。
猜你喜欢
  • 2011-02-10
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 2010-11-04
相关资源
最近更新 更多