如果清单特别大,则可能会导致性能变慢。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.执行hg --config format.generaldelta=1 clone --pull orig.gd orig.gd.gd。
克隆的克隆可能会极大地改善清单大小。这是因为当从generaldelta repo拉取时,将重新排序以优化清单大小。
例如,我最近转换了一个repo,其中包含约55000个SVN提交(使用hgsubversion进行拉取),以及约1000个Mercurial提交/合并/嫁接等。原始repo中的清单大小约为1.4GB。第一个克隆中的清单大小约为600MB。克隆的克隆中的清单大小约为30MB。
关于generaldelta的信息并不多 - 在它成为默认格式之前还有很多工作要做,但是它对许多项目都有效。前几个Google搜索结果提供了一些关于其首次引入时的信息,并且在mercurial-dev邮件列表上最近进行了一些讨论。