随着历史的增加,从sourcerepo mercurial存储库中拉出来会变慢。为什么,有解决方案吗?

时间:2013-01-23 16:07:23

标签: mercurial

问题

从我们的Sourcerepo mercurial存储库中提取更改过去只需要很少的时间,例如几秒钟。现在我需要足够的时间去喝酒并且有一段时间(几分钟)。正如我所假设的那样,它逐渐变慢,这是存储库中历史大小的函数。这真的很烦人,我需要做的只有那么多的饮酒和喝酒,它开始提高我的生产力。

上下文

  • 回购邮件在Sourcerepo
  • 我使用基于密钥的身份验证通过ssh SSH连接到repo。
  • 我使用TortoiseHG作为我的首选工具,不过通过命令行同样可以看到问题。
  • 检查传入的变更集需要很长时间,而不是拉动 更新花时间。
  • 如果没有变化,只需几秒钟就可以告诉我。
  • 我们使用了很多命名分支,我们自己关闭它们,所以一次打开5-20个,但历史上有数百个。
  • 我们在回购中修改了不到3k。
  • 推进仍然非常快。

我认为Hg使用某种delta编码来获取更改,它不应该花费这么长时间。我想知道我是否在Hg中缺少一个选项,或者是否有其他人遇到过这种行为?

提前致谢:)

1 个答案:

答案 0 :(得分:0)

你可以尝试

  • hg incoming -v --time --profile --debug REPO-URL并阅读输出 - 它可以解释过程中大多数缓慢的部分
  • 克隆Sourcerepo到本地存储库并根据此存储库测试传入(消除与网络相关的延迟)

如果没有帮助

  • 克隆repo的较小部分(从1到tip)并测试这些截断克隆的传入以识别变更集(我希望),这带来了这个头痛:我无法看到如何在单个大回购上使用bisect测试incoming运营时间