equal
deleted
inserted
replaced
504 else: |
504 else: |
505 return fp.read(size) |
505 return fp.read(size) |
506 except FileNotFoundError: |
506 except FileNotFoundError: |
507 return b'' |
507 return b'' |
508 |
508 |
509 def get_streams(self, max_linkrev): |
509 def get_streams(self, max_linkrev, force_inline=False): |
510 n = len(self) |
510 n = len(self) |
511 index = self.index |
511 index = self.index |
512 while n > 0: |
512 while n > 0: |
513 linkrev = index[n - 1][4] |
513 linkrev = index[n - 1][4] |
514 if linkrev < max_linkrev: |
514 if linkrev < max_linkrev: |
539 size = index_size + data_size |
539 size = index_size + data_size |
540 if size <= 65536: |
540 if size <= 65536: |
541 yield fp.read(size) |
541 yield fp.read(size) |
542 else: |
542 else: |
543 yield from util.filechunkiter(fp, limit=size) |
543 yield from util.filechunkiter(fp, limit=size) |
|
544 |
|
545 inline_stream = get_stream() |
|
546 next(inline_stream) |
|
547 return [ |
|
548 (self._indexfile, inline_stream, index_size + data_size), |
|
549 ] |
|
550 elif force_inline: |
|
551 |
|
552 def get_stream(): |
|
553 with self._datafp() as fp_d: |
|
554 yield None |
|
555 |
|
556 for rev in range(n): |
|
557 idx = self.index.entry_binary(rev) |
|
558 if rev == 0 and self._docket is None: |
|
559 # re-inject the inline flag |
|
560 header = self._format_flags |
|
561 header |= self._format_version |
|
562 header |= FLAG_INLINE_DATA |
|
563 header = self.index.pack_header(header) |
|
564 idx = header + idx |
|
565 yield idx |
|
566 yield self._getsegmentforrevs(rev, rev, df=fp_d)[1] |
544 |
567 |
545 inline_stream = get_stream() |
568 inline_stream = get_stream() |
546 next(inline_stream) |
569 next(inline_stream) |
547 return [ |
570 return [ |
548 (self._indexfile, inline_stream, index_size + data_size), |
571 (self._indexfile, inline_stream, index_size + data_size), |