diff -r 116da6bb7e3b -r f4a540c203d7 mercurial/exchange.py --- a/mercurial/exchange.py Tue May 23 01:28:56 2023 +0200 +++ b/mercurial/exchange.py Tue May 23 01:39:47 2023 +0200 @@ -146,6 +146,12 @@ splitted = requirements.split() params = bundle2._formatrequirementsparams(splitted) return b'none-v2;stream=v2;%s' % params + elif part.type == b'stream3-exp' and version is None: + # A stream3 part requires to be part of a v2 bundle + requirements = urlreq.unquote(part.params[b'requirements']) + splitted = requirements.split() + params = bundle2._formatrequirementsparams(splitted) + return b'none-v2;stream=v3-exp;%s' % params elif part.type == b'obsmarkers': params[b'obsolescence'] = b'yes' if not part.mandatory: