9

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

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

4

3 回答 3

7

如果清单变得特别大,则可能会导致性能下降。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 repo 中提取时,将重新排序以优化清单大小。

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

关于generaldelta online的信息并不多——在它成为默认格式之前还有很多工作要做,但它适用于许多项目。最初的几个谷歌搜索结果有一些关于它首次引入时的信息,并且最近在 mercurial-dev 邮件列表上进行了一些讨论。

于 2013-10-10T11:32:42.807 回答
1

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

于 2011-07-08T00:29:38.393 回答
-2

关闭 repo 克隆到的文件夹的实时防病毒监控和碎片整理。你能做的不多。

于 2011-07-12T03:23:49.220 回答