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,