comparison mercurial/store.py @ 47217:8f6165c90163

revlog: open files in 'r+' instead of 'a+' The code doing actual writing is already doing the necessary seeking, so we could safely use 'r+'. This make the file objecs usable in more situation, like updating the sidedata information during pull. revlog: forcibly move the file cursor at the right location before writing This is a paranoid change in case the changelog computation moved the cursors under our feets. This is not known to happens right now. Differential Revision: https://phab.mercurial-scm.org/D10608
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 03 May 2021 12:28:15 +0200
parents f38bf44e077f
children 616b8f412676
comparison
equal deleted inserted replaced
47216:2bd4b5218918 47217:8f6165c90163
704 path.startswith(b'data/') or path.startswith(b'meta/') 704 path.startswith(b'data/') or path.startswith(b'meta/')
705 ): 705 ):
706 # do not trigger a fncache load when adding a file that already is 706 # do not trigger a fncache load when adding a file that already is
707 # known to exist. 707 # known to exist.
708 notload = self.fncache.entries is None and self.vfs.exists(encoded) 708 notload = self.fncache.entries is None and self.vfs.exists(encoded)
709 if notload and b'a' in mode and not self.vfs.stat(encoded).st_size: 709 if notload and b'r+' in mode and not self.vfs.stat(encoded).st_size:
710 # when appending to an existing file, if the file has size zero, 710 # when appending to an existing file, if the file has size zero,
711 # it should be considered as missing. Such zero-size files are 711 # it should be considered as missing. Such zero-size files are
712 # the result of truncation when a transaction is aborted. 712 # the result of truncation when a transaction is aborted.
713 notload = False 713 notload = False
714 if not notload: 714 if not notload: