mercurial/exchangev2.py
changeset 39814 d059cb669632
parent 39641 aa7e312375cf
child 40035 7a347d362a45
equal deleted inserted replaced
39813:c30faea8d02d 39814:d059cb669632
   165                 remotebookmarks[mark] = node
   165                 remotebookmarks[mark] = node
   166 
   166 
   167             # TODO add mechanism for extensions to examine records so they
   167             # TODO add mechanism for extensions to examine records so they
   168             # can siphon off custom data fields.
   168             # can siphon off custom data fields.
   169 
   169 
       
   170             extrafields = {}
       
   171 
       
   172             for field, size in cset.get(b'fieldsfollowing', []):
       
   173                 extrafields[field] = next(objs)
       
   174 
   170             # Some entries might only be metadata only updates.
   175             # Some entries might only be metadata only updates.
   171             if b'revisionsize' not in cset:
   176             if b'revision' not in extrafields:
   172                 continue
   177                 continue
   173 
   178 
   174             data = next(objs)
   179             data = extrafields[b'revision']
   175 
   180 
   176             yield (
   181             yield (
   177                 node,
   182                 node,
   178                 cset[b'parents'][0],
   183                 cset[b'parents'][0],
   179                 cset[b'parents'][1],
   184                 cset[b'parents'][1],
   225     # the wire data to that format.
   230     # the wire data to that format.
   226     def iterrevisions(objs, progress):
   231     def iterrevisions(objs, progress):
   227         for manifest in objs:
   232         for manifest in objs:
   228             node = manifest[b'node']
   233             node = manifest[b'node']
   229 
   234 
   230             if b'deltasize' in manifest:
   235             extrafields = {}
       
   236 
       
   237             for field, size in manifest.get(b'fieldsfollowing', []):
       
   238                 extrafields[field] = next(objs)
       
   239 
       
   240             if b'delta' in extrafields:
   231                 basenode = manifest[b'deltabasenode']
   241                 basenode = manifest[b'deltabasenode']
   232                 delta = next(objs)
   242                 delta = extrafields[b'delta']
   233             elif b'revisionsize' in manifest:
   243             elif b'revision' in extrafields:
   234                 basenode = nullid
   244                 basenode = nullid
   235                 revision = next(objs)
   245                 revision = extrafields[b'revision']
   236                 delta = mdiff.trivialdiffheader(len(revision)) + revision
   246                 delta = mdiff.trivialdiffheader(len(revision)) + revision
   237             else:
   247             else:
   238                 continue
   248                 continue
   239 
   249 
   240             yield (
   250             yield (
   329 def _fetchfiles(repo, tr, remote, fnodes, linkrevs):
   339 def _fetchfiles(repo, tr, remote, fnodes, linkrevs):
   330     def iterrevisions(objs, progress):
   340     def iterrevisions(objs, progress):
   331         for filerevision in objs:
   341         for filerevision in objs:
   332             node = filerevision[b'node']
   342             node = filerevision[b'node']
   333 
   343 
   334             if b'deltasize' in filerevision:
   344             extrafields = {}
       
   345 
       
   346             for field, size in filerevision.get(b'fieldsfollowing', []):
       
   347                 extrafields[field] = next(objs)
       
   348 
       
   349             if b'delta' in extrafields:
   335                 basenode = filerevision[b'deltabasenode']
   350                 basenode = filerevision[b'deltabasenode']
   336                 delta = next(objs)
   351                 delta = extrafields[b'delta']
   337             elif b'revisionsize' in filerevision:
   352             elif b'revision' in extrafields:
   338                 basenode = nullid
   353                 basenode = nullid
   339                 revision = next(objs)
   354                 revision = extrafields[b'revision']
   340                 delta = mdiff.trivialdiffheader(len(revision)) + revision
   355                 delta = mdiff.trivialdiffheader(len(revision)) + revision
   341             else:
   356             else:
   342                 continue
   357                 continue
   343 
   358 
   344             yield (
   359             yield (