# HG changeset patch # User Pierre-Yves David # Date 2019-09-30 18:21:05 # Node ID 4bbc9569e7227121aedaaad854fb2e21e335942c # Parent 808a57a0847005e7db3dc554bfcd3cbedde5eb40 changegroup: use positive logic for treemanifest changegroup3 logic We are about to add more cases, in that context, it is simpler to avoid double negative. En addition, We document the situation for the next soul. Differential Revision: https://phab.mercurial-scm.org/D6938 diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py --- a/mercurial/changegroup.py +++ b/mercurial/changegroup.py @@ -1281,9 +1281,19 @@ def _makecg3packer(repo, oldmatcher, mat def allsupportedversions(repo): versions = set(_packermap.keys()) - if not (repo.ui.configbool('experimental', 'changegroup3') or - repo.ui.configbool('experimental', 'treemanifest') or - 'treemanifest' in repo.requirements): + needv03 = False + if (repo.ui.configbool('experimental', 'changegroup3') or + repo.ui.configbool('experimental', 'treemanifest') or + 'treemanifest' in repo.requirements): + # we keep version 03 because we need to to exchange treemanifest data + # + # we also keep vresion 01 and 02, because it is possible for repo to + # contains both normal and tree manifest at the same time. so using + # older version to pull data is viable + # + # (or even to push subset of history) + needv03 = True + if not needv03: versions.discard('03') return versions