Mercurial > public > mercurial-scm > hg-stable
diff mercurial/bundlecaches.py @ 50694:a41eeb877d07
branching: merge with stable
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 18 Jun 2023 00:09:39 +0200 |
parents | 7b723217d368 |
children | 0913a49e020c |
line wrap: on
line diff
--- a/mercurial/bundlecaches.py Tue Jun 20 02:36:52 2023 +0200 +++ b/mercurial/bundlecaches.py Sun Jun 18 00:09:39 2023 +0200 @@ -52,6 +52,14 @@ return url +SUPPORTED_CLONEBUNDLE_SCHEMES = [ + b"http://", + b"https://", + b"largefile://", + CLONEBUNDLESCHEME, +] + + @attr.s class bundlespec: compression = attr.ib() @@ -384,7 +392,9 @@ return False -def filterclonebundleentries(repo, entries, streamclonerequested=False): +def filterclonebundleentries( + repo, entries, streamclonerequested=False, pullbundles=False +): """Remove incompatible clone bundle manifest entries. Accepts a list of entries parsed with ``parseclonebundlesmanifest`` @@ -396,6 +406,16 @@ """ newentries = [] for entry in entries: + url = entry.get(b'URL') + if not pullbundles and not any( + [url.startswith(scheme) for scheme in SUPPORTED_CLONEBUNDLE_SCHEMES] + ): + repo.ui.debug( + b'filtering %s because not a supported clonebundle scheme\n' + % url + ) + continue + spec = entry.get(b'BUNDLESPEC') if spec: try: @@ -405,8 +425,7 @@ # entries. if streamclonerequested and not isstreamclonespec(bundlespec): repo.ui.debug( - b'filtering %s because not a stream clone\n' - % entry[b'URL'] + b'filtering %s because not a stream clone\n' % url ) continue @@ -416,7 +435,7 @@ except error.UnsupportedBundleSpecification as e: repo.ui.debug( b'filtering %s because unsupported bundle ' - b'spec: %s\n' % (entry[b'URL'], stringutil.forcebytestr(e)) + b'spec: %s\n' % (url, stringutil.forcebytestr(e)) ) continue # If we don't have a spec and requested a stream clone, we don't know @@ -424,14 +443,12 @@ elif streamclonerequested: repo.ui.debug( b'filtering %s because cannot determine if a stream ' - b'clone bundle\n' % entry[b'URL'] + b'clone bundle\n' % url ) continue if b'REQUIRESNI' in entry and not sslutil.hassni: - repo.ui.debug( - b'filtering %s because SNI not supported\n' % entry[b'URL'] - ) + repo.ui.debug(b'filtering %s because SNI not supported\n' % url) continue if b'REQUIREDRAM' in entry: @@ -439,15 +456,14 @@ requiredram = util.sizetoint(entry[b'REQUIREDRAM']) except error.ParseError: repo.ui.debug( - b'filtering %s due to a bad REQUIREDRAM attribute\n' - % entry[b'URL'] + b'filtering %s due to a bad REQUIREDRAM attribute\n' % url ) continue actualram = repo.ui.estimatememory() if actualram is not None and actualram * 0.66 < requiredram: repo.ui.debug( b'filtering %s as it needs more than 2/3 of system memory\n' - % entry[b'URL'] + % url ) continue