changeset 48600:d9017df70135

stream-clone: filter possible missing requirements using all supported one The `supportedformat` requirements is missing some important requirements and it seems better to filter out with all requirements we know, not just an "arbitrary" subset. This is especially relevant as we about to phase out the `supportedformat` class attribute. (a backport of this change to stable should be sent soon). Differential Revision: https://phab.mercurial-scm.org/D12031
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 24 Jan 2022 11:49:06 +0100
parents dfbfa802876b
children baddab229b86
files mercurial/streamclone.py tests/test-http-bundle1.t tests/test-http.t
diffstat 3 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/streamclone.py	Mon Jan 17 19:18:20 2022 +0100
+++ b/mercurial/streamclone.py	Mon Jan 24 11:49:06 2022 +0100
@@ -128,7 +128,7 @@
 
         streamreqs = set(streamreqs.split(b','))
         # Server requires something we don't support. Bail.
-        missingreqs = streamreqs - repo.supportedformats
+        missingreqs = streamreqs - repo.supported
         if missingreqs:
             pullop.repo.ui.warn(
                 _(
@@ -503,7 +503,7 @@
         )
 
     filecount, bytecount, requirements = readbundle1header(fp)
-    missingreqs = requirements - repo.supportedformats
+    missingreqs = requirements - repo.supported
     if missingreqs:
         raise error.Abort(
             _(b'unable to apply stream clone: unsupported format: %s')
--- a/tests/test-http-bundle1.t	Mon Jan 17 19:18:20 2022 +0100
+++ b/tests/test-http-bundle1.t	Mon Jan 24 11:49:06 2022 +0100
@@ -70,8 +70,10 @@
 
   $ cat > $TESTTMP/removesupportedformat.py << EOF
   > from mercurial import localrepo
-  > def extsetup(ui):
-  >     localrepo.localrepository.supportedformats.remove(b'generaldelta')
+  > def reposetup(ui, repo):
+  >     local = repo.local()
+  >     if local is not None:
+  >         local.supported.remove(b'generaldelta')
   > EOF
 
   $ hg clone --config extensions.rsf=$TESTTMP/removesupportedformat.py --stream http://localhost:$HGPORT/ copy3
--- a/tests/test-http.t	Mon Jan 17 19:18:20 2022 +0100
+++ b/tests/test-http.t	Mon Jan 24 11:49:06 2022 +0100
@@ -59,8 +59,10 @@
 
   $ cat > $TESTTMP/removesupportedformat.py << EOF
   > from mercurial import localrepo
-  > def extsetup(ui):
-  >     localrepo.localrepository.supportedformats.remove(b'generaldelta')
+  > def reposetup(ui, repo):
+  >     local = repo.local()
+  >     if local is not None:
+  >         local.supported.remove(b'generaldelta')
   > EOF
 
   $ hg clone --config extensions.rsf=$TESTTMP/removesupportedformat.py --stream http://localhost:$HGPORT/ copy3