comparison mercurial/streamclone.py @ 48597:8475a1364909

stream-clone: factor computation of requirement of a stream clone This gather code duplicated in multiple place and will make it easier to modify it safely in the future. Differential Revision: https://phab.mercurial-scm.org/D12028
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 14 Jan 2022 18:02:25 +0100
parents 739f2ca3aa3f
children d9017df70135
comparison
equal deleted inserted replaced
48596:739f2ca3aa3f 48597:8475a1364909
43 """ 43 """
44 requirements = set(default_requirements) 44 requirements = set(default_requirements)
45 requirements -= supported_formats 45 requirements -= supported_formats
46 requirements.update(streamed_requirements) 46 requirements.update(streamed_requirements)
47 return requirements 47 return requirements
48
49
50 def streamed_requirements(repo):
51 """the set of requirement the new clone will have to support
52
53 This is used for advertising the stream options and to generate the actual
54 stream content."""
55 requiredformats = repo.requirements & repo.supportedformats
56 return requiredformats
48 57
49 58
50 def canperformstreamclone(pullop, bundle2=False): 59 def canperformstreamclone(pullop, bundle2=False):
51 """Whether it is possible to perform a streaming clone as part of pull. 60 """Whether it is possible to perform a streaming clone as part of pull.
52 61
344 Returns a tuple of (requirements, data generator). 353 Returns a tuple of (requirements, data generator).
345 """ 354 """
346 if compression != b'UN': 355 if compression != b'UN':
347 raise ValueError(b'we do not support the compression argument yet') 356 raise ValueError(b'we do not support the compression argument yet')
348 357
349 requirements = repo.requirements & repo.supportedformats 358 requirements = streamed_requirements(repo)
350 requires = b','.join(sorted(requirements)) 359 requires = b','.join(sorted(requirements))
351 360
352 def gen(): 361 def gen():
353 yield b'HGS1' 362 yield b'HGS1'
354 yield compression 363 yield compression