872 '02': (cg2packer, cg2unpacker), |
872 '02': (cg2packer, cg2unpacker), |
873 # cg3 adds support for exchanging revlog flags and treemanifests |
873 # cg3 adds support for exchanging revlog flags and treemanifests |
874 '03': (cg3packer, cg3unpacker), |
874 '03': (cg3packer, cg3unpacker), |
875 } |
875 } |
876 |
876 |
877 def allsupportedversions(ui): |
877 def allsupportedversions(repo): |
878 versions = set(_packermap.keys()) |
878 versions = set(_packermap.keys()) |
879 if not (ui.configbool('experimental', 'changegroup3') or |
879 if not (repo.ui.configbool('experimental', 'changegroup3') or |
880 ui.configbool('experimental', 'treemanifest')): |
880 repo.ui.configbool('experimental', 'treemanifest')): |
881 versions.discard('03') |
881 versions.discard('03') |
882 return versions |
882 return versions |
883 |
883 |
884 # Changegroup versions that can be applied to the repo |
884 # Changegroup versions that can be applied to the repo |
885 def supportedincomingversions(repo): |
885 def supportedincomingversions(repo): |
886 versions = allsupportedversions(repo.ui) |
886 versions = allsupportedversions(repo) |
887 if 'treemanifest' in repo.requirements: |
887 if 'treemanifest' in repo.requirements: |
888 versions.add('03') |
888 versions.add('03') |
889 return versions |
889 return versions |
890 |
890 |
891 # Changegroup versions that can be created from the repo |
891 # Changegroup versions that can be created from the repo |
892 def supportedoutgoingversions(repo): |
892 def supportedoutgoingversions(repo): |
893 versions = allsupportedversions(repo.ui) |
893 versions = allsupportedversions(repo) |
894 if 'treemanifest' in repo.requirements: |
894 if 'treemanifest' in repo.requirements: |
895 # Versions 01 and 02 support only flat manifests and it's just too |
895 # Versions 01 and 02 support only flat manifests and it's just too |
896 # expensive to convert between the flat manifest and tree manifest on |
896 # expensive to convert between the flat manifest and tree manifest on |
897 # the fly. Since tree manifests are hashed differently, all of history |
897 # the fly. Since tree manifests are hashed differently, all of history |
898 # would have to be converted. Instead, we simply don't even pretend to |
898 # would have to be converted. Instead, we simply don't even pretend to |