comparison mercurial/revlogutils/deltas.py @ 51060:533d6943f6a3

revlog: remove legacy usage of `_srmingapsize` All core code is now getting the setting from the DataConfig object.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 10 Oct 2023 11:33:33 +0200
parents 8c614fa16330
children 26dcdbe15024
comparison
equal deleted inserted replaced
51059:8c614fa16330 51060:533d6943f6a3
48 def __init__(self, data, density=0.5, mingap=0, snapshot=()): 48 def __init__(self, data, density=0.5, mingap=0, snapshot=()):
49 """data is an list of revision payload boundaries""" 49 """data is an list of revision payload boundaries"""
50 from .. import revlog 50 from .. import revlog
51 51
52 self._data = data 52 self._data = data
53 self._srmingapsize = mingap
54 self.data_config = revlog.DataConfig() 53 self.data_config = revlog.DataConfig()
55 self.data_config.sr_density_threshold = density 54 self.data_config.sr_density_threshold = density
56 self.data_config.sr_min_gap_size = mingap 55 self.data_config.sr_min_gap_size = mingap
57 self.delta_config = revlog.DeltaConfig() 56 self.delta_config = revlog.DeltaConfig()
58 self.feature_config = revlog.FeatureConfig() 57 self.feature_config = revlog.FeatureConfig()
89 ``revs`` is sliced into groups that should be read in one time. 88 ``revs`` is sliced into groups that should be read in one time.
90 Assume that revs are sorted. 89 Assume that revs are sorted.
91 90
92 The initial chunk is sliced until the overall density (payload/chunks-span 91 The initial chunk is sliced until the overall density (payload/chunks-span
93 ratio) is above `revlog.data_config.sr_density_threshold`. No gap smaller 92 ratio) is above `revlog.data_config.sr_density_threshold`. No gap smaller
94 than `revlog._srmingapsize` is skipped. 93 than `revlog.data_config.sr_min_gap_size` is skipped.
95 94
96 If `targetsize` is set, no chunk larger than `targetsize` will be yield. 95 If `targetsize` is set, no chunk larger than `targetsize` will be yield.
97 For consistency with other slicing choice, this limit won't go lower than 96 For consistency with other slicing choice, this limit won't go lower than
98 `revlog._srmingapsize`. 97 `revlog.data_config.sr_min_gap_size`.
99 98
100 If individual revisions chunk are larger than this limit, they will still 99 If individual revisions chunk are larger than this limit, they will still
101 be raised individually. 100 be raised individually.
102 101
103 >>> data = [ 102 >>> data = [
142 [[-1, 0], [11], [13, 15]] 141 [[-1, 0], [11], [13, 15]]
143 >>> list(slicechunk(revlog, [-1, 13, 15], targetsize=5)) 142 >>> list(slicechunk(revlog, [-1, 13, 15], targetsize=5))
144 [[-1], [13], [15]] 143 [[-1], [13], [15]]
145 """ 144 """
146 if targetsize is not None: 145 if targetsize is not None:
147 targetsize = max(targetsize, revlog._srmingapsize) 146 targetsize = max(targetsize, revlog.data_config.sr_min_gap_size)
148 # targetsize should not be specified when evaluating delta candidates: 147 # targetsize should not be specified when evaluating delta candidates:
149 # * targetsize is used to ensure we stay within specification when reading, 148 # * targetsize is used to ensure we stay within specification when reading,
150 densityslicing = getattr(revlog.index, 'slicechunktodensity', None) 149 densityslicing = getattr(revlog.index, 'slicechunktodensity', None)
151 if densityslicing is None: 150 if densityslicing is None:
152 densityslicing = lambda x, y, z: _slicechunktodensity(revlog, x, y, z) 151 densityslicing = lambda x, y, z: _slicechunktodensity(revlog, x, y, z)
153 for chunk in densityslicing( 152 for chunk in densityslicing(
154 revs, revlog.data_config.sr_density_threshold, revlog._srmingapsize 153 revs,
154 revlog.data_config.sr_density_threshold,
155 revlog.data_config.sr_min_gap_size,
155 ): 156 ):
156 for subchunk in _slicechunktosize(revlog, chunk, targetsize): 157 for subchunk in _slicechunktosize(revlog, chunk, targetsize):
157 yield subchunk 158 yield subchunk
158 159
159 160