mercurial/streamclone.py
changeset 48601 baddab229b86
parent 48600 d9017df70135
child 48681 e845537f6adb
equal deleted inserted replaced
48600:d9017df70135 48601:baddab229b86
    30 from .utils import (
    30 from .utils import (
    31     stringutil,
    31     stringutil,
    32 )
    32 )
    33 
    33 
    34 
    34 
    35 def new_stream_clone_requirements(
    35 def new_stream_clone_requirements(default_requirements, streamed_requirements):
    36     supported_formats, default_requirements, streamed_requirements
       
    37 ):
       
    38     """determine the final set of requirement for a new stream clone
    36     """determine the final set of requirement for a new stream clone
    39 
    37 
    40     this method combine the "default" requirements that a new repository would
    38     this method combine the "default" requirements that a new repository would
    41     use with the constaint we get from the stream clone content. We keep local
    39     use with the constaint we get from the stream clone content. We keep local
    42     configuration choice when possible.
    40     configuration choice when possible.
    43     """
    41     """
    44     requirements = set(default_requirements)
    42     requirements = set(default_requirements)
    45     requirements -= supported_formats
    43     requirements -= requirementsmod.STREAM_FIXED_REQUIREMENTS
    46     requirements.update(streamed_requirements)
    44     requirements.update(streamed_requirements)
    47     return requirements
    45     return requirements
    48 
    46 
    49 
    47 
    50 def streamed_requirements(repo):
    48 def streamed_requirements(repo):
    51     """the set of requirement the new clone will have to support
    49     """the set of requirement the new clone will have to support
    52 
    50 
    53     This is used for advertising the stream options and to generate the actual
    51     This is used for advertising the stream options and to generate the actual
    54     stream content."""
    52     stream content."""
    55     requiredformats = repo.requirements & repo.supportedformats
    53     requiredformats = (
       
    54         repo.requirements & requirementsmod.STREAM_FIXED_REQUIREMENTS
       
    55     )
    56     return requiredformats
    56     return requiredformats
    57 
    57 
    58 
    58 
    59 def canperformstreamclone(pullop, bundle2=False):
    59 def canperformstreamclone(pullop, bundle2=False):
    60     """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.
   207         )
   207         )
   208 
   208 
   209     with repo.lock():
   209     with repo.lock():
   210         consumev1(repo, fp, filecount, bytecount)
   210         consumev1(repo, fp, filecount, bytecount)
   211         repo.requirements = new_stream_clone_requirements(
   211         repo.requirements = new_stream_clone_requirements(
   212             repo.supportedformats,
       
   213             repo.requirements,
   212             repo.requirements,
   214             requirements,
   213             requirements,
   215         )
   214         )
   216         repo.svfs.options = localrepo.resolvestorevfsoptions(
   215         repo.svfs.options = localrepo.resolvestorevfsoptions(
   217             repo.ui, repo.requirements, repo.features
   216             repo.ui, repo.requirements, repo.features
   818         )
   817         )
   819 
   818 
   820     consumev2(repo, fp, filecount, filesize)
   819     consumev2(repo, fp, filecount, filesize)
   821 
   820 
   822     repo.requirements = new_stream_clone_requirements(
   821     repo.requirements = new_stream_clone_requirements(
   823         repo.supportedformats,
       
   824         repo.requirements,
   822         repo.requirements,
   825         requirements,
   823         requirements,
   826     )
   824     )
   827     repo.svfs.options = localrepo.resolvestorevfsoptions(
   825     repo.svfs.options = localrepo.resolvestorevfsoptions(
   828         repo.ui, repo.requirements, repo.features
   826         repo.ui, repo.requirements, repo.features