我可以优化Mercurial克隆吗?

时间:2011-07-07 20:45:43

标签: optimization mercurial defragmentation

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

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

3 个答案:

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

  3. 这可能会使清单大小有所改善,但不会带来全部好处。

    1. 执行hg --config format.generaldelta=1 clone --pull orig.gd orig.gd.gd
    2. 克隆的克隆可以使清单大小得到更大的改善。这是因为当从generaldelta repo中提取时,将重新排序事物以优化清单大小。

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

      关于generaldelta在线没有太多信息 - 在它成为默认格式之前仍有工作要做,但它适用于许多项目。最初的几个谷歌搜索结果有一些信息,从它最初推出时,最近有一些关于mercurial-dev邮件列表的讨论。

答案 1 :(得分:0)

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

答案 2 :(得分:-2)

关闭repo克隆到的文件夹的实时防病毒监控并进行碎片整理。你无能为力。