我可以优化Mercurial克隆吗?



我的Mercurial克隆变得非常慢,可能是由于磁盘上的碎片。有办法优化它吗?

最明显的方法是创建一个新的克隆,然后将我的MQ、已保存的bundle、hgrc等复制到新的克隆,并删除旧的克隆。但似乎有人以前可能遇到过这个问题,并进行了扩展?

如果清单变得特别大,则可能导致性能变慢。Mercurial有另一种存储库格式——generaldelta——它通常可以生成更小的清单。

您可以使用

检查清单的大小:

ls -lh .hg/store/*manifest*

从generaldelta获取最大值:

  1. 安装Mercurial 2.7.2或更高版本(2.7.2包含对generaldelta中可能导致更大清单大小的错误的修复-但在较早版本中很有可能不会遇到该错误)。

  2. 执行hg --config format.generaldelta=1 clone --pull orig orig.gd

这可能会使清单大小有所改善,但不是全部的好处。

  1. 执行hg --config format.generaldelta=1 clone --pull orig.gd orig.gd.gd .

克隆的克隆可以在清单大小上提供更大的改进。这是因为当从通用增量仓库中提取时,会重新排序以优化清单大小。

作为generaldelta潜在好处的一个例子,我最近转换了一个大约55000个SVN提交(使用hgsubversion)加上大约1000个Mercurial提交/合并/移植等的repo。原始仓库中的清单约为1.4GB。第一个克隆中的清单是~600MB。在克隆的克隆的清单是~30MB。

网上没有很多关于generaldelta的信息——在它成为默认格式之前还有很多工作要做,但它对许多项目都很有效。最初的几个Google搜索结果包含了它刚推出时的一些信息,并且在mercurial-dev邮件列表中有一些最近的讨论。

我删除了repo并重新克隆,这提高了性能。

关闭对repo克隆到的文件夹的实时防病毒监控并进行碎片整理。你能做的也不多了。

最新更新