在没有 generaldelta 的情况下重新克隆 mercurial 存储库

Re-cloning a mercurial repository without generaldelta

我正在尝试在面向 Internet 的计算机上执行 hg clone 以供以后在离线构建计算机上使用。可惜mercurial在上网机上是3.9.1,离线机上是1.4

我收到错误 abort: requirement 'generaldelta' not supported! 以及 abort: requirement 'dotencode' not supported!

我发现这是因为在 1.9 中添加了 generaldelta 功能,在 1.7 中添加了 dotencode。我已经使用 MissingRequirement wiki page 中的说明使用以下内容降级此存储库。

hg clone -U --config format.generaldelta=0 --config format.dotencode=0 --pull /tmp/foo /tmp/bar

但是 /tmp/bar 的新仓库仍然使用 generaldelta,尽管 dotencode 要求已经消失。即

cat /tmp/bar/.hg/requires 

fncache
generaldelta  <=== still there
revlogv1
store

store

如何在禁用 generaldelta 和 dotencode 的情况下重写 repo?

配置选项应该是 format.usegeneraldelta 而不是 format.generaldelta。即

hg clone -U --config format.usegeneraldelta=0 --config format.dotencode=0 --pull /tmp/foo /tmp/bar

注意配置。选项都是 config.use<feature-name> 除了 config.dotencode 参见 Mercurial format options。当心,因为也没有任何错误检查。