upgrade: support upgrade to/from zstd storage (
issue6088)
Now that we have an official config option for a shiny format improvement, we
better make it simple to migrate to/from it.
compression: introduce an official `zstd-revlog` requirement
This requirement supersedes `exp-compression-zstd`. However, we keep support for
the old requirement.
Strictly speaking, we do not need to add a new requirement, there are no logic
change making "new" repo incompatible with mercurial client using a version
that support `exp-compression-zstd`.
The choice to introduce a new requirement is motivated by the following:
* The previous requirement was explicitly "experimental". Using it by default
could confuse users.
* adding support for a hypothetical third compression engine will requires new
code, and will comes with its own requirement tool.
* We won't use it as the default for a while since I do not think we support
zstd on all platform. I can imagine we'll gain another (unrelated but on my
default) requirement by the time we turn this zstd by default.
compression: only declare revlog support for available engine
Even if we know that an engine support revlog compression, the Mercurial process
still won't support it if the compression engine is not available.
branchcache: lazily validate nodes in iteritems()
This saves ~0.30 sec on creating a new branch on our internal repo.
Differential Revision: https://phab.mercurial-scm.org/D6236
branchcache: only iterate over branches which needs to be verified
Otherwise we loop over all the branches and call _verifybranch() even if not
required.
Differential Revision: https://phab.mercurial-scm.org/D6240
branchcache: fix the docstring of _verifybranch()
Initially the function was designed to support verifying all branches but later
I decided to have a separate function. I forget to remove the doc related to
that. Thanks to Yuya for spotting this in review.
Differential Revision: https://phab.mercurial-scm.org/D6239