我的Mercurial克隆变得非常慢,可能是由于磁盘碎片造成的。有没有办法优化它?
制作新克隆的明显方法,然后将我的MQ,保存的包,hgrc等复制到新克隆并删除旧克隆。但似乎有人可能会遇到这个问题并做出扩展来做到这一点吗?
答案 0 :(得分:7)
如果清单变得特别大,则可能导致性能降低。 Mercurial有一种替代的存储库格式 - generaldelta - 通常可以产生更小的清单。
您可以使用以下方式检查清单的大小:
ls -lh .hg/store/*manifest*
从generaldelta获得最大值:
安装Mercurial 2.7.2或更高版本(2.7.2包含对generaldelta中可能导致更大清单大小的错误的修复 - 但您很可能不会遇到早期版本的错误)
执行hg --config format.generaldelta=1 clone --pull orig orig.gd
。
这可能会使清单大小有所改善,但不会带来全部好处。
hg --config format.generaldelta=1 clone --pull orig.gd orig.gd.gd
。克隆的克隆可以使清单大小得到更大的改善。这是因为当从generaldelta repo中提取时,将重新排序事物以优化清单大小。
作为generaldelta的潜在好处的一个例子,我最近转换了一个回复,即~55000 SVN提交(使用hgsubversion提取)加上~1000 Mercurial提交/合并/移植等。原始回购中的清单是~1.4 GB。第一个克隆中的清单是~600MB。克隆克隆中的表现为~30MB。
关于generaldelta在线没有太多信息 - 在它成为默认格式之前仍有工作要做,但它适用于许多项目。最初的几个谷歌搜索结果有一些信息,从它最初推出时,最近有一些关于mercurial-dev邮件列表的讨论。
答案 1 :(得分:0)
我删除了repo并重新克隆,并且提高了性能。
答案 2 :(得分:-2)
关闭repo克隆到的文件夹的实时防病毒监控并进行碎片整理。你无能为力。