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: