equal
deleted
inserted
replaced
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 ( |