comparison mercurial/obsolete.py @ 22330:e74f8a65252d

obsolete: move _fm0encodeonemarker next to _fm0readmarkers
author Pierre-Yves David <pierre-yves.david@fb.com>
date Mon, 25 Aug 2014 16:09:18 +0200
parents ed37aa74d208
children b130b241718e
comparison
equal deleted inserted replaced
22329:ed37aa74d208 22330:e74f8a65252d
198 198
199 metadata = encodemeta(meta) 199 metadata = encodemeta(meta)
200 200
201 yield (pre, sucs, flags, metadata, date, parents) 201 yield (pre, sucs, flags, metadata, date, parents)
202 202
203 def _fm0encodeonemarker(marker):
204 pre, sucs, flags, metadata, date, parents = marker
205 metadata = decodemeta(metadata)
206 metadata['date'] = '%d %i' % date
207 if parents is not None:
208 if not parents:
209 # mark that we explicitly recorded no parents
210 metadata['p0'] = ''
211 for i, p in enumerate(parents):
212 metadata['p%i' % (i + 1)] = node.hex(p)
213 metadata = encodemeta(metadata)
214 nbsuc = len(sucs)
215 format = _fm0fixed + (_fm0node * nbsuc)
216 data = [nbsuc, len(metadata), flags, pre]
217 data.extend(sucs)
218 return _pack(format, *data) + metadata
219
203 def encodemeta(meta): 220 def encodemeta(meta):
204 """Return encoded metadata string to string mapping. 221 """Return encoded metadata string to string mapping.
205 222
206 Assume no ':' in key and no '\0' in both key and value.""" 223 Assume no ':' in key and no '\0' in both key and value."""
207 for key, value in meta.iteritems(): 224 for key, value in meta.iteritems():
427 if addheader: 444 if addheader:
428 yield _pack('>B', _fm0version) 445 yield _pack('>B', _fm0version)
429 for marker in markers: 446 for marker in markers:
430 yield _fm0encodeonemarker(marker) 447 yield _fm0encodeonemarker(marker)
431 448
432
433 def _fm0encodeonemarker(marker):
434 pre, sucs, flags, metadata, date, parents = marker
435 metadata = decodemeta(metadata)
436 metadata['date'] = '%d %i' % date
437 if parents is not None:
438 if not parents:
439 # mark that we explicitly recorded no parents
440 metadata['p0'] = ''
441 for i, p in enumerate(parents):
442 metadata['p%i' % (i + 1)] = node.hex(p)
443 metadata = encodemeta(metadata)
444 nbsuc = len(sucs)
445 format = _fm0fixed + (_fm0node * nbsuc)
446 data = [nbsuc, len(metadata), flags, pre]
447 data.extend(sucs)
448 return _pack(format, *data) + metadata
449 449
450 # arbitrary picked to fit into 8K limit from HTTP server 450 # arbitrary picked to fit into 8K limit from HTTP server
451 # you have to take in account: 451 # you have to take in account:
452 # - the version header 452 # - the version header
453 # - the base85 encoding 453 # - the base85 encoding