comparison mercurial/changelog.py @ 47148:a07d5cb03a85

revlog: rename `indexfile` to `_indexfile` We want to make the actual location of the indexfile and location more of an implementation details than what is is currently. In that process, we make the attribute private. Differential Revision: https://phab.mercurial-scm.org/D10574
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 03 May 2021 12:22:16 +0200
parents c6b8d5d91e73
children 8d3c2f9d4af7
comparison
equal deleted inserted replaced
47147:8a1a51d31e85 47148:a07d5cb03a85
450 """delay visibility of index updates to other readers""" 450 """delay visibility of index updates to other readers"""
451 451
452 if not self._delayed: 452 if not self._delayed:
453 if len(self) == 0: 453 if len(self) == 0:
454 self._divert = True 454 self._divert = True
455 if self._realopener.exists(self.indexfile + b'.a'): 455 if self._realopener.exists(self._indexfile + b'.a'):
456 self._realopener.unlink(self.indexfile + b'.a') 456 self._realopener.unlink(self._indexfile + b'.a')
457 self.opener = _divertopener(self._realopener, self.indexfile) 457 self.opener = _divertopener(self._realopener, self._indexfile)
458 else: 458 else:
459 self._delaybuf = [] 459 self._delaybuf = []
460 self.opener = _delayopener( 460 self.opener = _delayopener(
461 self._realopener, self.indexfile, self._delaybuf 461 self._realopener, self._indexfile, self._delaybuf
462 ) 462 )
463 self._delayed = True 463 self._delayed = True
464 tr.addpending(b'cl-%i' % id(self), self._writepending) 464 tr.addpending(b'cl-%i' % id(self), self._writepending)
465 tr.addfinalize(b'cl-%i' % id(self), self._finalize) 465 tr.addfinalize(b'cl-%i' % id(self), self._finalize)
466 466
469 self._delayed = False 469 self._delayed = False
470 self.opener = self._realopener 470 self.opener = self._realopener
471 # move redirected index data back into place 471 # move redirected index data back into place
472 if self._divert: 472 if self._divert:
473 assert not self._delaybuf 473 assert not self._delaybuf
474 tmpname = self.indexfile + b".a" 474 tmpname = self._indexfile + b".a"
475 nfile = self.opener.open(tmpname) 475 nfile = self.opener.open(tmpname)
476 nfile.close() 476 nfile.close()
477 self.opener.rename(tmpname, self.indexfile, checkambig=True) 477 self.opener.rename(tmpname, self._indexfile, checkambig=True)
478 elif self._delaybuf: 478 elif self._delaybuf:
479 fp = self.opener(self.indexfile, b'a', checkambig=True) 479 fp = self.opener(self._indexfile, b'a', checkambig=True)
480 fp.write(b"".join(self._delaybuf)) 480 fp.write(b"".join(self._delaybuf))
481 fp.close() 481 fp.close()
482 self._delaybuf = None 482 self._delaybuf = None
483 self._divert = False 483 self._divert = False
484 # split when we're done 484 # split when we're done
487 def _writepending(self, tr): 487 def _writepending(self, tr):
488 """create a file containing the unfinalized state for 488 """create a file containing the unfinalized state for
489 pretxnchangegroup""" 489 pretxnchangegroup"""
490 if self._delaybuf: 490 if self._delaybuf:
491 # make a temporary copy of the index 491 # make a temporary copy of the index
492 fp1 = self._realopener(self.indexfile) 492 fp1 = self._realopener(self._indexfile)
493 pendingfilename = self.indexfile + b".a" 493 pendingfilename = self._indexfile + b".a"
494 # register as a temp file to ensure cleanup on failure 494 # register as a temp file to ensure cleanup on failure
495 tr.registertmp(pendingfilename) 495 tr.registertmp(pendingfilename)
496 # write existing data 496 # write existing data
497 fp2 = self._realopener(pendingfilename, b"w") 497 fp2 = self._realopener(pendingfilename, b"w")
498 fp2.write(fp1.read()) 498 fp2.write(fp1.read())
500 fp2.write(b"".join(self._delaybuf)) 500 fp2.write(b"".join(self._delaybuf))
501 fp2.close() 501 fp2.close()
502 # switch modes so finalize can simply rename 502 # switch modes so finalize can simply rename
503 self._delaybuf = None 503 self._delaybuf = None
504 self._divert = True 504 self._divert = True
505 self.opener = _divertopener(self._realopener, self.indexfile) 505 self.opener = _divertopener(self._realopener, self._indexfile)
506 506
507 if self._divert: 507 if self._divert:
508 return True 508 return True
509 509
510 return False 510 return False