Mercurial > public > mercurial-scm > hg
comparison mercurial/revlogutils/rewrite.py @ 51017:509f0f7fc89e
delta-computer: stop explicitly taking file handle
The revlog has all the logic for opening and caching such handles, so no need to
duplicate it here. In addition, this let the revlog handle that logic by itself
which is better.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 25 Sep 2023 22:51:57 +0200 |
parents | 66c139d33cfe |
children | 498afb627f78 |
comparison
equal
deleted
inserted
replaced
51016:66c139d33cfe | 51017:509f0f7fc89e |
---|---|
232 Return a mapping: {rev → (new_base, data_start, data_end, compression_mode)} | 232 Return a mapping: {rev → (new_base, data_start, data_end, compression_mode)} |
233 """ | 233 """ |
234 dc = deltas.deltacomputer(revlog) | 234 dc = deltas.deltacomputer(revlog) |
235 rewritten_entries = {} | 235 rewritten_entries = {} |
236 first_excl_rev = min(excluded_revs) | 236 first_excl_rev = min(excluded_revs) |
237 with revlog.reading(), revlog._segmentfile._open_read() as dfh: | 237 with revlog.reading(): |
238 for rev in range(first_excl_rev, len(old_index)): | 238 for rev in range(first_excl_rev, len(old_index)): |
239 if rev in excluded_revs: | 239 if rev in excluded_revs: |
240 # this revision will be preserved as is, so we don't need to | 240 # this revision will be preserved as is, so we don't need to |
241 # consider recomputing a delta. | 241 # consider recomputing a delta. |
242 continue | 242 continue |
259 textlen=len(text), | 259 textlen=len(text), |
260 cachedelta=None, | 260 cachedelta=None, |
261 flags=entry[ENTRY_DATA_OFFSET] & 0xFFFF, | 261 flags=entry[ENTRY_DATA_OFFSET] & 0xFFFF, |
262 ) | 262 ) |
263 d = dc.finddeltainfo( | 263 d = dc.finddeltainfo( |
264 info, dfh, excluded_bases=excluded_revs, target_rev=rev | 264 info, excluded_bases=excluded_revs, target_rev=rev |
265 ) | 265 ) |
266 default_comp = revlog._docket.default_compression_header | 266 default_comp = revlog._docket.default_compression_header |
267 comp_mode, d = deltas.delta_compression(default_comp, d) | 267 comp_mode, d = deltas.delta_compression(default_comp, d) |
268 # using `tell` is a bit lazy, but we are not here for speed | 268 # using `tell` is a bit lazy, but we are not here for speed |
269 start = tmp_storage.tell() | 269 start = tmp_storage.tell() |
772 [None], | 772 [None], |
773 textlen, | 773 textlen, |
774 (base_rev, delta), | 774 (base_rev, delta), |
775 flags, | 775 flags, |
776 ) | 776 ) |
777 # cached by the global "writing" context | 777 return deltacomputer.buildtext(revinfo) |
778 assert revlog._writinghandles is not None | |
779 if revlog._inline: | |
780 fh = revlog._writinghandles[0] | |
781 else: | |
782 fh = revlog._writinghandles[1] | |
783 return deltacomputer.buildtext(revinfo, fh) | |
784 | 778 |
785 is_affected = _is_revision_affected_fast_inner( | 779 is_affected = _is_revision_affected_fast_inner( |
786 is_censored, | 780 is_censored, |
787 delta_base, | 781 delta_base, |
788 lambda: delta, | 782 lambda: delta, |