mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
dirstate: make restoring from backup avoid ambiguity of file stat
File .hg/dirstate is restored by renaming from backup in failure inside scopes below. If renaming keeps ctime, mtime and size of a file, restoring is overlooked, and old contents cached before restoring isn't invalidated as expected. - dirstateguard scope (from '.hg/dirstate.SUFFIX') - transaction scope (from '.hg/journal.dirstate') To avoid ambiguity of file stat at restoring, this patch invokes vfs.rename() with checkambig=True. This patch is a part of "Exact Cache Validation Plan": https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
This commit is contained in:
parent
b3d7ea5cb8
commit
19907e427c
@ -1243,7 +1243,8 @@ class dirstate(object):
|
||||
self.invalidate()
|
||||
filename = self._actualfilename(tr)
|
||||
# using self._filename to avoid having "pending" in the backup filename
|
||||
self._opener.rename(prefix + self._filename + suffix, filename)
|
||||
self._opener.rename(prefix + self._filename + suffix, filename,
|
||||
checkambig=True)
|
||||
|
||||
def clearbackup(self, tr, suffix='', prefix=''):
|
||||
'''Clear backup file with suffix'''
|
||||
|
Loading…
Reference in New Issue
Block a user