缩小Mercurial回购大小(特别是清单)

时间:2015-11-24 20:02:05

标签: mercurial bitbucket kiln branching-strategy

我们目前正在尝试将我们的mercurial(在这种情况下是一个古老版本的Kiln)迁移到BitBucket,我们立即遇到了大小问题(如果您不知道,BitBucket强加了相当慷慨的2gb回购限制 - 我们偶然发现了。)

无论如何,我已经清理了过去的罪过:

  • 使用convert with filemaps(删除永远不应该在repo中的二进制文件/静态文件)
  • 为主要仓库中不应存在的其他东西创建单独的回购
  • 尝试使用generaldelta来减小尺寸(按照 https://www.mercurial-scm.org/wiki/ScaleMercurial
  • 使用分支图来尝试合并旧分支及其关联的变更集

即使执行了这些步骤,我仍然拥有一个非常大的清单文件,尽管为repo存储的“数据”缩小到“可管理”大小(~600mb),我的清单文件是近700mb。

一些额外的信息:一般来说,我们实行每个功能分支,并且有两个分支跟踪环境:

  • 发布分支(部署到分段然后再分发)
  • 默认分支(最初发布时,所有功能首先在此处合并然后发布。此分支会死,并且每两周重生一次)

此工作流程的一个区别是默认本身从未合并到发布(la gitflow / hgflow)。这种单向流动是否会导致问题?

我们“只”有120个开放的分支头,所以看起来这是可管理的?

我显然在这里缺少一些步骤(否则回购只是完全被冲洗)。

1 个答案:

答案 0 :(得分:0)

为了供将来参考,我按照Tim的建议进行了上述操作。我的完整脚本最终看起来像这样:

hg --config format.generaldelta=1 clone --pull oldrepo oldrepo-generaldelta
hg --config format.generaldelta=1 clone --pull oldrepo-generaldata oldrepo-generaldelta2
hg convert --filemap filemap.txt oldrepo-generaldelta2 newrepo
正如蒂姆在他的相关答案中提到的那样 - 我们的清单从第二个克隆的约700mb减少到约40mb。

Can I optimize a Mercurial clone?