我的 Mercurial 克隆变得非常慢,可能是由于磁盘碎片所致。有没有办法优化它?
最明显的方法是创建一个新克隆,然后将我的 MQ、保存的捆绑包、hgrc 等复制到新克隆并删除旧克隆。但似乎有人以前遇到过这个问题并进行了扩展来做到这一点?
如果清单变得特别大,则可能会导致性能下降。 Mercurial 有一种替代存储库格式 - GeneralDelta - 通常可以生成更小的清单。
您可以使用以下方法检查清单的大小:
ls -lh .hg/store/*manifest*
要从 GeneralDelta 获得最大值:
安装 Mercurial 2.7.2 或更高版本(2.7.2 包括对 GeneralDelta 中的错误的修复,该错误可能导致清单大小更大 - 但您很有可能不会在早期版本中遇到该错误)。
Execute hg --config format.generaldelta=1 clone --pull orig orig.gd
.
这可能会在清单大小方面带来一些改进,但并不能带来全部好处。
- Execute
hg --config format.generaldelta=1 clone --pull orig.gd orig.gd.gd
.
克隆的克隆可能会在清单大小方面带来更大的改进。这是因为当从 GeneralDelta 存储库中提取内容时,将会重新排序以优化清单大小。
作为 GeneralDelta 潜在优势的一个例子,我最近转换了一个约 55000 个 SVN 提交(使用 hgsubversion 拉取)加上约 1000 个 Mercurial 提交/合并/移植等的存储库。原始存储库中的清单约为 1.4GB。第一个克隆中的清单约为 600MB。克隆的克隆中的清单约为 30MB。
网上关于 GeneralDelta 的信息并不多——在它成为默认格式之前还有很多工作要做,但它对于许多项目来说效果很好。前几个 Google 搜索结果包含了它首次引入时的一些信息,并且 Mercurial-dev 邮件列表上最近有一些讨论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)