我可以优化Mercurial克隆吗?

Pau*_*gar 8 optimization mercurial defragmentation

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

制作新克隆的明显方法,然后将我的MQ,保存的包,hgrc等复制到新克隆并删除旧克隆.但似乎有人可能在此之前遇到过这个问题并做了扩展吗?

Tim*_*ney 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在线的信息并不多 - 在它成为默认格式之前还有很多工作要做,但它适用于许多项目.最初的几个谷歌搜索结果有一些信息,从它最初推出时,最近有一些关于mercurial-dev邮件列表的讨论.


Pau*_*gar 1

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