缩小 Mercurial 回购大小(特别是清单)
Shrinking Mercurial repo size (manifests in particular)
我们目前正在尝试将我们的 mercurial(在本例中是 Kiln 的古老版本)迁移到 BitBucket,我们立即 运行 遇到大小问题(如果您不知道,BitBucket 强加了一个相当慷慨的 2gb 回购限制 - 我们碰巧错过了)。
总之,前世的罪孽我已经洗清了:
- 使用 convert with filemaps(删除 binaries/static 不应该在 repo 中的文件)
- 为其他不应该在主仓库中的东西创建单独的仓库
- 正在尝试使用 generaldelta 来减小大小(根据
https://www.mercurial-scm.org/wiki/ScaleMercurial)
- 使用 b运行chmaps 尝试整合旧的 b运行ches 及其关联的变更集
即使执行了这些步骤,我 仍然 有一个非常大的清单文件,尽管为回购存储的 "data" 缩小到 "manageable" 大小(~600mb),我的清单文件将近 700mb。
一些附加信息:一般来说,我们练习 b运行ch-per-feature 并有两个 b运行ch 跟踪环境:
- a 发布 b运行ch(部署到暂存然后到生产)
- default b运行ch(最初是off-release,所有特性先合并到这里再发布。这个b运行ch每两周死一次又重生一次)
此工作流程的一个区别是默认值本身永远不会合并到发布中(la gitflow/hgflow)。这种单向流入违约会导致问题吗?
我们 "only" 有 120 个开放的 b运行ch 磁头,所以这似乎是可以管理的?
我显然在这里遗漏了一些步骤(否则回购完全被淹没了)。
为了将来参考,我遵循了 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
正如 Tim 在他的链接回答中提到的那样 - 我们的清单从大约 700mb 减少到第二个克隆的大约 40mb。
Can I optimize a Mercurial clone?
我们目前正在尝试将我们的 mercurial(在本例中是 Kiln 的古老版本)迁移到 BitBucket,我们立即 运行 遇到大小问题(如果您不知道,BitBucket 强加了一个相当慷慨的 2gb 回购限制 - 我们碰巧错过了)。
总之,前世的罪孽我已经洗清了:
- 使用 convert with filemaps(删除 binaries/static 不应该在 repo 中的文件)
- 为其他不应该在主仓库中的东西创建单独的仓库
- 正在尝试使用 generaldelta 来减小大小(根据 https://www.mercurial-scm.org/wiki/ScaleMercurial)
- 使用 b运行chmaps 尝试整合旧的 b运行ches 及其关联的变更集
即使执行了这些步骤,我 仍然 有一个非常大的清单文件,尽管为回购存储的 "data" 缩小到 "manageable" 大小(~600mb),我的清单文件将近 700mb。
一些附加信息:一般来说,我们练习 b运行ch-per-feature 并有两个 b运行ch 跟踪环境:
- a 发布 b运行ch(部署到暂存然后到生产)
- default b运行ch(最初是off-release,所有特性先合并到这里再发布。这个b运行ch每两周死一次又重生一次)
此工作流程的一个区别是默认值本身永远不会合并到发布中(la gitflow/hgflow)。这种单向流入违约会导致问题吗?
我们 "only" 有 120 个开放的 b运行ch 磁头,所以这似乎是可以管理的?
我显然在这里遗漏了一些步骤(否则回购完全被淹没了)。
为了将来参考,我遵循了 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
正如 Tim 在他的链接回答中提到的那样 - 我们的清单从大约 700mb 减少到第二个克隆的大约 40mb。
Can I optimize a Mercurial clone?