equal
deleted
inserted
replaced
239 ) |
239 ) |
240 |
240 |
241 hexdigits = b'0123456789abcdefABCDEF' |
241 hexdigits = b'0123456789abcdefABCDEF' |
242 |
242 |
243 |
243 |
|
244 class _Config: |
|
245 def copy(self): |
|
246 return self.__class__(**self.__dict__) |
|
247 |
|
248 |
244 @attr.s() |
249 @attr.s() |
245 class FeatureConfig: |
250 class FeatureConfig(_Config): |
246 """Hold configuration values about the available revlog features""" |
251 """Hold configuration values about the available revlog features""" |
247 |
252 |
248 # the default compression engine |
253 # the default compression engine |
249 compression_engine = attr.ib(default=b'zlib') |
254 compression_engine = attr.ib(default=b'zlib') |
250 # compression engines options |
255 # compression engines options |
263 # meta-encoded files, so allow it to disable this behavior. |
268 # meta-encoded files, so allow it to disable this behavior. |
264 canonical_parent_order = attr.ib(default=False) |
269 canonical_parent_order = attr.ib(default=False) |
265 # can ellipsis commit be used |
270 # can ellipsis commit be used |
266 enable_ellipsis = attr.ib(default=False) |
271 enable_ellipsis = attr.ib(default=False) |
267 |
272 |
|
273 def copy(self): |
|
274 new = super().copy() |
|
275 new.compression_engine_options = self.compression_engine_options.copy() |
|
276 return new |
|
277 |
268 |
278 |
269 @attr.s() |
279 @attr.s() |
270 class DataConfig: |
280 class DataConfig(_Config): |
271 """Hold configuration value about how the revlog data are read""" |
281 """Hold configuration value about how the revlog data are read""" |
272 |
282 |
273 # should we try to open the "pending" version of the revlog |
283 # should we try to open the "pending" version of the revlog |
274 try_pending = attr.ib(default=False) |
284 try_pending = attr.ib(default=False) |
275 # should we try to open the "splitted" version of the revlog |
285 # should we try to open the "splitted" version of the revlog |
295 # are delta encoded against arbitrary bases. |
305 # are delta encoded against arbitrary bases. |
296 generaldelta = attr.ib(default=False) |
306 generaldelta = attr.ib(default=False) |
297 |
307 |
298 |
308 |
299 @attr.s() |
309 @attr.s() |
300 class DeltaConfig: |
310 class DeltaConfig(_Config): |
301 """Hold configuration value about how new delta are computed |
311 """Hold configuration value about how new delta are computed |
302 |
312 |
303 Some attributes are duplicated from DataConfig to help havign each object |
313 Some attributes are duplicated from DataConfig to help havign each object |
304 self contained. |
314 self contained. |
305 """ |
315 """ |
3373 if getattr(destrevlog, 'filteredrevs', None): |
3383 if getattr(destrevlog, 'filteredrevs', None): |
3374 raise ValueError(_(b'destination revlog has filtered revisions')) |
3384 raise ValueError(_(b'destination revlog has filtered revisions')) |
3375 |
3385 |
3376 # lazydelta and lazydeltabase controls whether to reuse a cached delta, |
3386 # lazydelta and lazydeltabase controls whether to reuse a cached delta, |
3377 # if possible. |
3387 # if possible. |
3378 oldlazydelta = destrevlog._lazydelta |
3388 old_delta_config = destrevlog.delta_config |
3379 oldlazydeltabase = destrevlog._lazydeltabase |
3389 destrevlog.delta_config = destrevlog.delta_config.copy() |
3380 oldamd = destrevlog._deltabothparents |
|
3381 |
3390 |
3382 try: |
3391 try: |
3383 if deltareuse == self.DELTAREUSEALWAYS: |
3392 if deltareuse == self.DELTAREUSEALWAYS: |
3384 destrevlog.delta_config.lazy_delta_base = True |
3393 destrevlog.delta_config.lazy_delta_base = True |
3385 destrevlog.delta_config.lazy_delta = True |
3394 destrevlog.delta_config.lazy_delta = True |
3388 destrevlog.delta_config.lazy_delta = True |
3397 destrevlog.delta_config.lazy_delta = True |
3389 elif deltareuse == self.DELTAREUSENEVER: |
3398 elif deltareuse == self.DELTAREUSENEVER: |
3390 destrevlog.delta_config.lazy_delta_base = False |
3399 destrevlog.delta_config.lazy_delta_base = False |
3391 destrevlog.delta_config.lazy_delta = False |
3400 destrevlog.delta_config.lazy_delta = False |
3392 |
3401 |
3393 delta_both_parents = forcedeltabothparents or oldamd |
3402 delta_both_parents = ( |
|
3403 forcedeltabothparents or old_delta_config.delta_both_parents |
|
3404 ) |
3394 destrevlog.delta_config.delta_both_parents = delta_both_parents |
3405 destrevlog.delta_config.delta_both_parents = delta_both_parents |
3395 |
3406 |
3396 with self.reading(): |
3407 with self.reading(): |
3397 self._clone( |
3408 self._clone( |
3398 tr, |
3409 tr, |
3402 forcedeltabothparents, |
3413 forcedeltabothparents, |
3403 sidedata_helpers, |
3414 sidedata_helpers, |
3404 ) |
3415 ) |
3405 |
3416 |
3406 finally: |
3417 finally: |
3407 destrevlog.delta_config.lazy_delta = oldlazydelta |
3418 destrevlog.delta_config = old_delta_config |
3408 destrevlog.delta_config.lazy_delta_base = oldlazydeltabase |
|
3409 destrevlog.delta_config.delta_both_parents = oldamd |
|
3410 |
3419 |
3411 def _clone( |
3420 def _clone( |
3412 self, |
3421 self, |
3413 tr, |
3422 tr, |
3414 destrevlog, |
3423 destrevlog, |