Mercurial > public > mercurial-scm > hg
diff mercurial/dirstate.py @ 33440:ec306bc6915b
dirstate: update backup functions to take full backup filename
Update the dirstate functions so that the caller supplies the full backup
filename rather than just a prefix and suffix.
The localrepo code was already hard-coding the fact that the backup name must
be (exactly prefix + "dirstate" + suffix): it relied on this in _journalfiles()
and undofiles(). Making the caller responsible for specifying the full backup
name removes the need for the localrepo code to assume that dirstate._filename
is always "dirstate".
Differential Revision: https://phab.mercurial-scm.org/D68
author | Adam Simpkins <simpkins@fb.com> |
---|---|
date | Wed, 12 Jul 2017 15:24:07 -0700 |
parents | fb320398a21c |
children | 377e8ddaebef 36d216dcae6a |
line wrap: on
line diff
--- a/mercurial/dirstate.py Thu Jul 13 09:51:50 2017 -0700 +++ b/mercurial/dirstate.py Wed Jul 12 15:24:07 2017 -0700 @@ -1300,10 +1300,10 @@ else: return self._filename - def savebackup(self, tr, suffix='', prefix=''): - '''Save current dirstate into backup file with suffix''' - assert len(suffix) > 0 or len(prefix) > 0 + def savebackup(self, tr, backupname): + '''Save current dirstate into backup file''' filename = self._actualfilename(tr) + assert backupname != filename # use '_writedirstate' instead of 'write' to write changes certainly, # because the latter omits writing out if transaction is running. @@ -1324,27 +1324,20 @@ # end of this transaction tr.registertmp(filename, location='plain') - backupname = prefix + self._filename + suffix - assert backupname != filename self._opener.tryunlink(backupname) # hardlink backup is okay because _writedirstate is always called # with an "atomictemp=True" file. util.copyfile(self._opener.join(filename), self._opener.join(backupname), hardlink=True) - def restorebackup(self, tr, suffix='', prefix=''): - '''Restore dirstate by backup file with suffix''' - assert len(suffix) > 0 or len(prefix) > 0 + def restorebackup(self, tr, backupname): + '''Restore dirstate by backup file''' # this "invalidate()" prevents "wlock.release()" from writing # changes of dirstate out after restoring from backup file 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, - checkambig=True) + self._opener.rename(backupname, filename, checkambig=True) - def clearbackup(self, tr, suffix='', prefix=''): - '''Clear backup file with suffix''' - assert len(suffix) > 0 or len(prefix) > 0 - # using self._filename to avoid having "pending" in the backup filename - self._opener.unlink(prefix + self._filename + suffix) + def clearbackup(self, tr, backupname): + '''Clear backup file''' + self._opener.unlink(backupname)