mercurial/bundle2.py
changeset 25401 d29201352af7
parent 25336 7c60a42265fb
child 25481 6de96cb31176
equal deleted inserted replaced
25400:7759dc97c5c7 25401:d29201352af7
   154 import obsolete
   154 import obsolete
   155 import pushkey
   155 import pushkey
   156 import url
   156 import url
   157 import re
   157 import re
   158 
   158 
   159 import changegroup, error
   159 import changegroup, error, tags
   160 from i18n import _
   160 from i18n import _
   161 
   161 
   162 _pack = struct.pack
   162 _pack = struct.pack
   163 _unpack = struct.unpack
   163 _unpack = struct.unpack
   164 
   164 
  1108 capabilities = {'HG20': (),
  1108 capabilities = {'HG20': (),
  1109                 'listkeys': (),
  1109                 'listkeys': (),
  1110                 'pushkey': (),
  1110                 'pushkey': (),
  1111                 'digests': tuple(sorted(util.DIGESTS.keys())),
  1111                 'digests': tuple(sorted(util.DIGESTS.keys())),
  1112                 'remote-changegroup': ('http', 'https'),
  1112                 'remote-changegroup': ('http', 'https'),
       
  1113                 'hgtagsfnodes': (),
  1113                }
  1114                }
  1114 
  1115 
  1115 def getrepocaps(repo, allowpushback=False):
  1116 def getrepocaps(repo, allowpushback=False):
  1116     """return the bundle2 capabilities for a given repo
  1117     """return the bundle2 capabilities for a given repo
  1117 
  1118 
  1358 def handlepushkeyreply(op, inpart):
  1359 def handlepushkeyreply(op, inpart):
  1359     """retrieve the result of a pushkey request"""
  1360     """retrieve the result of a pushkey request"""
  1360     ret = int(inpart.params['new'])
  1361     ret = int(inpart.params['new'])
  1361     partid = int(inpart.params['in-reply-to'])
  1362     partid = int(inpart.params['in-reply-to'])
  1362     op.records.add('obsmarkers', {'new': ret}, partid)
  1363     op.records.add('obsmarkers', {'new': ret}, partid)
       
  1364 
       
  1365 @parthandler('hgtagsfnodes')
       
  1366 def handlehgtagsfnodes(op, inpart):
       
  1367     """Applies .hgtags fnodes cache entries to the local repo.
       
  1368 
       
  1369     Payload is pairs of 20 byte changeset nodes and filenodes.
       
  1370     """
       
  1371     cache = tags.hgtagsfnodescache(op.repo.unfiltered())
       
  1372 
       
  1373     count = 0
       
  1374     while True:
       
  1375         node = inpart.read(20)
       
  1376         fnode = inpart.read(20)
       
  1377         if len(node) < 20 or len(fnode) < 20:
       
  1378             op.ui.debug('received incomplete .hgtags fnodes data, ignoring\n')
       
  1379             break
       
  1380         cache.setfnode(node, fnode)
       
  1381         count += 1
       
  1382 
       
  1383     cache.write()
       
  1384     op.ui.debug('applied %i hgtags fnodes cache entries\n' % count)