Mercurial > hg
comparison mercurial/changelog.py @ 51438:05eba178da45 stable
branching: merge default into stable for 6.7rc0
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Fri, 23 Feb 2024 15:10:44 +0100 |
parents | 5b3b6db49bbb |
children | ec8c1d0f6d48 3cf9e52f5e27 |
comparison
equal
deleted
inserted
replaced
51399:46fed351e451 | 51438:05eba178da45 |
---|---|
306 checkambig=True, | 306 checkambig=True, |
307 mmaplargeindex=True, | 307 mmaplargeindex=True, |
308 persistentnodemap=opener.options.get(b'persistent-nodemap', False), | 308 persistentnodemap=opener.options.get(b'persistent-nodemap', False), |
309 concurrencychecker=concurrencychecker, | 309 concurrencychecker=concurrencychecker, |
310 trypending=trypending, | 310 trypending=trypending, |
311 may_inline=False, | |
311 ) | 312 ) |
312 | 313 |
313 if self._initempty and (self._format_version == revlog.REVLOGV1): | 314 if self._initempty and (self._format_version == revlog.REVLOGV1): |
314 # changelogs don't benefit from generaldelta. | 315 # changelogs don't benefit from generaldelta. |
315 | 316 |
342 super(changelog, self)._write_docket(tr) | 343 super(changelog, self)._write_docket(tr) |
343 | 344 |
344 def delayupdate(self, tr): | 345 def delayupdate(self, tr): |
345 """delay visibility of index updates to other readers""" | 346 """delay visibility of index updates to other readers""" |
346 assert not self._inner.is_open | 347 assert not self._inner.is_open |
348 assert not self._may_inline | |
349 # enforce that older changelog that are still inline are split at the | |
350 # first opportunity. | |
351 if self._inline: | |
352 self._enforceinlinesize(tr) | |
347 if self._docket is not None: | 353 if self._docket is not None: |
348 self._v2_delayed = True | 354 self._v2_delayed = True |
349 else: | 355 else: |
350 new_index = self._inner.delay() | 356 new_index = self._inner.delay() |
351 if new_index is not None: | 357 if new_index is not None: |
361 self._docket.write(tr) | 367 self._docket.write(tr) |
362 self._v2_delayed = False | 368 self._v2_delayed = False |
363 else: | 369 else: |
364 new_index_file = self._inner.finalize_pending() | 370 new_index_file = self._inner.finalize_pending() |
365 self._indexfile = new_index_file | 371 self._indexfile = new_index_file |
366 # split when we're done | 372 if self._inline: |
367 self._enforceinlinesize(tr, side_write=False) | 373 msg = 'changelog should not be inline at that point' |
374 raise error.ProgrammingError(msg) | |
368 | 375 |
369 def _writepending(self, tr): | 376 def _writepending(self, tr): |
370 """create a file containing the unfinalized state for | 377 """create a file containing the unfinalized state for |
371 pretxnchangegroup""" | 378 pretxnchangegroup""" |
372 assert not self._inner.is_open | 379 assert not self._inner.is_open |
378 if new_index is not None: | 385 if new_index is not None: |
379 self._indexfile = new_index | 386 self._indexfile = new_index |
380 tr.registertmp(new_index) | 387 tr.registertmp(new_index) |
381 return any_pending | 388 return any_pending |
382 | 389 |
383 def _enforceinlinesize(self, tr, side_write=True): | 390 def _enforceinlinesize(self, tr): |
384 if not self.is_delaying: | 391 if not self.is_delaying: |
385 revlog.revlog._enforceinlinesize(self, tr, side_write=side_write) | 392 revlog.revlog._enforceinlinesize(self, tr) |
386 | 393 |
387 def read(self, nodeorrev): | 394 def read(self, nodeorrev): |
388 """Obtain data from a parsed changelog revision. | 395 """Obtain data from a parsed changelog revision. |
389 | 396 |
390 Returns a 6-tuple of: | 397 Returns a 6-tuple of: |