mercurial/dirstate.py
changeset 31217 1ef37b16b8e8
parent 31216 49e5491ed9bd
child 31218 fc57a8b95f1b
equal deleted inserted replaced
31216:49e5491ed9bd 31217:1ef37b16b8e8
  1233             # ensure that pending file written above is unlinked at
  1233             # ensure that pending file written above is unlinked at
  1234             # failure, even if tr.writepending isn't invoked until the
  1234             # failure, even if tr.writepending isn't invoked until the
  1235             # end of this transaction
  1235             # end of this transaction
  1236             tr.registertmp(filename, location='plain')
  1236             tr.registertmp(filename, location='plain')
  1237 
  1237 
  1238         self._opener.write(prefix + self._filename + suffix,
  1238         backupname = prefix + self._filename + suffix
  1239                            self._opener.tryread(filename))
  1239         assert backupname != filename
       
  1240         if self._opener.exists(backupname):
       
  1241             self._opener.unlink(backupname)
       
  1242         # hardlink backup is okay because _writedirstate is always called
       
  1243         # with an "atomictemp=True" file.
       
  1244         util.copyfile(self._opener.join(filename),
       
  1245                       self._opener.join(backupname), hardlink=True)
  1240 
  1246 
  1241     def restorebackup(self, tr, suffix='', prefix=''):
  1247     def restorebackup(self, tr, suffix='', prefix=''):
  1242         '''Restore dirstate by backup file with suffix'''
  1248         '''Restore dirstate by backup file with suffix'''
  1243         assert len(suffix) > 0 or len(prefix) > 0
  1249         assert len(suffix) > 0 or len(prefix) > 0
  1244         # this "invalidate()" prevents "wlock.release()" from writing
  1250         # this "invalidate()" prevents "wlock.release()" from writing