hgext/narrow/narrowwirepeer.py
changeset 42944 c2676b5a9f59
parent 42417 a97b12f726e4
child 43076 2372284d9457
equal deleted inserted replaced
42943:5fadf6103790 42944:c2676b5a9f59
    11     bundle2,
    11     bundle2,
    12     error,
    12     error,
    13     extensions,
    13     extensions,
    14     hg,
    14     hg,
    15     narrowspec,
    15     narrowspec,
    16     node as nodemod,
       
    17     pycompat,
    16     pycompat,
    18     wireprototypes,
    17     wireprototypes,
    19     wireprotov1peer,
    18     wireprotov1peer,
    20     wireprotov1server,
    19     wireprotov1server,
    21 )
    20 )
    59     ellipses: whether to send ellipses data or not
    58     ellipses: whether to send ellipses data or not
    60     """
    59     """
    61 
    60 
    62     preferuncompressed = False
    61     preferuncompressed = False
    63     try:
    62     try:
    64         oldincludes = wireprototypes.decodelist(oldincludes)
    63         def splitpaths(data):
    65         newincludes = wireprototypes.decodelist(newincludes)
    64             # work around ''.split(',') => ['']
    66         oldexcludes = wireprototypes.decodelist(oldexcludes)
    65             return data.split(b',') if data else []
    67         newexcludes = wireprototypes.decodelist(newexcludes)
    66         oldincludes = splitpaths(oldincludes)
       
    67         newincludes = splitpaths(newincludes)
       
    68         oldexcludes = splitpaths(oldexcludes)
       
    69         newexcludes = splitpaths(newexcludes)
    68         # validate the patterns
    70         # validate the patterns
    69         narrowspec.validatepatterns(set(oldincludes))
    71         narrowspec.validatepatterns(set(oldincludes))
    70         narrowspec.validatepatterns(set(newincludes))
    72         narrowspec.validatepatterns(set(newincludes))
    71         narrowspec.validatepatterns(set(oldexcludes))
    73         narrowspec.validatepatterns(set(oldexcludes))
    72         narrowspec.validatepatterns(set(newexcludes))
    74         narrowspec.validatepatterns(set(newexcludes))
    73 
    75 
    74         common = wireprototypes.decodelist(commonheads)
    76         common = wireprototypes.decodelist(commonheads)
    75         known = wireprototypes.decodelist(known)
    77         known = wireprototypes.decodelist(known)
    76         known = {nodemod.bin(n) for n in known}
       
    77         if ellipses == '0':
    78         if ellipses == '0':
    78             ellipses = False
    79             ellipses = False
    79         else:
    80         else:
    80             ellipses = bool(ellipses)
    81             ellipses = bool(ellipses)
    81         cgversion = cgversion
    82         cgversion = cgversion
   104     chunks = bundler.getchunks()
   105     chunks = bundler.getchunks()
   105     return wireprototypes.streamres(gen=chunks,
   106     return wireprototypes.streamres(gen=chunks,
   106                                     prefer_uncompressed=preferuncompressed)
   107                                     prefer_uncompressed=preferuncompressed)
   107 
   108 
   108 def peernarrowwiden(remote, **kwargs):
   109 def peernarrowwiden(remote, **kwargs):
   109     for ch in (r'oldincludes', r'newincludes', r'oldexcludes', r'newexcludes',
   110     for ch in (r'commonheads', r'known'):
   110                r'commonheads', r'known'):
       
   111         kwargs[ch] = wireprototypes.encodelist(kwargs[ch])
   111         kwargs[ch] = wireprototypes.encodelist(kwargs[ch])
       
   112 
       
   113     for ch in (r'oldincludes', r'newincludes', r'oldexcludes', r'newexcludes'):
       
   114         kwargs[ch] = b','.join(kwargs[ch])
   112 
   115 
   113     kwargs[r'ellipses'] = '%i' % bool(kwargs[r'ellipses'])
   116     kwargs[r'ellipses'] = '%i' % bool(kwargs[r'ellipses'])
   114     f = remote._callcompressable('narrow_widen', **kwargs)
   117     f = remote._callcompressable('narrow_widen', **kwargs)
   115     return bundle2.getunbundler(remote.ui, f)
   118     return bundle2.getunbundler(remote.ui, f)