mercurial/dirstate.py
branchstable
changeset 49655 5fb2546d0df1
parent 49493 6193e846cb65
child 50149 0f0880c8a7e5
equal deleted inserted replaced
49654:4fc6b423fa97 49655:5fb2546d0df1
  1442 
  1442 
  1443     def _new_backup_data_filename(self, backupname):
  1443     def _new_backup_data_filename(self, backupname):
  1444         """return a filename to backup a data-file or None"""
  1444         """return a filename to backup a data-file or None"""
  1445         if not self._use_dirstate_v2:
  1445         if not self._use_dirstate_v2:
  1446             return None
  1446             return None
       
  1447         if self._map.docket.uuid is None:
       
  1448             # not created yet, nothing to backup
       
  1449             return None
  1447         data_filename = self._map.docket.data_filename()
  1450         data_filename = self._map.docket.data_filename()
  1448         return data_filename, self.data_backup_filename(backupname)
  1451         return data_filename, self.data_backup_filename(backupname)
  1449 
  1452 
  1450     def backup_data_file(self, backupname):
  1453     def backup_data_file(self, backupname):
  1451         if not self._use_dirstate_v2:
  1454         if not self._use_dirstate_v2:
  1512     def restorebackup(self, tr, backupname):
  1515     def restorebackup(self, tr, backupname):
  1513         '''Restore dirstate by backup file'''
  1516         '''Restore dirstate by backup file'''
  1514         # this "invalidate()" prevents "wlock.release()" from writing
  1517         # this "invalidate()" prevents "wlock.release()" from writing
  1515         # changes of dirstate out after restoring from backup file
  1518         # changes of dirstate out after restoring from backup file
  1516         self.invalidate()
  1519         self.invalidate()
       
  1520         o = self._opener
       
  1521         if not o.exists(backupname):
       
  1522             # there was no file backup, delete existing files
       
  1523             filename = self._actualfilename(tr)
       
  1524             data_file = None
       
  1525             if self._use_dirstate_v2 and self._map.docket.uuid is not None:
       
  1526                 data_file = self._map.docket.data_filename()
       
  1527             if o.exists(filename):
       
  1528                 o.unlink(filename)
       
  1529             if data_file is not None and o.exists(data_file):
       
  1530                 o.unlink(data_file)
       
  1531             return
  1517         filename = self._actualfilename(tr)
  1532         filename = self._actualfilename(tr)
  1518         o = self._opener
       
  1519         data_pair = self.backup_data_file(backupname)
  1533         data_pair = self.backup_data_file(backupname)
  1520         if util.samefile(o.join(backupname), o.join(filename)):
  1534         if o.exists(filename) and util.samefile(
       
  1535             o.join(backupname), o.join(filename)
       
  1536         ):
  1521             o.unlink(backupname)
  1537             o.unlink(backupname)
  1522         else:
  1538         else:
  1523             o.rename(backupname, filename, checkambig=True)
  1539             o.rename(backupname, filename, checkambig=True)
  1524 
  1540 
  1525         if data_pair is not None:
  1541         if data_pair is not None:
  1532                 o.rename(data_backup, target, checkambig=True)
  1548                 o.rename(data_backup, target, checkambig=True)
  1533 
  1549 
  1534     def clearbackup(self, tr, backupname):
  1550     def clearbackup(self, tr, backupname):
  1535         '''Clear backup file'''
  1551         '''Clear backup file'''
  1536         o = self._opener
  1552         o = self._opener
  1537         data_backup = self.backup_data_file(backupname)
  1553         if o.exists(backupname):
  1538         o.unlink(backupname)
  1554             data_backup = self.backup_data_file(backupname)
  1539 
  1555             o.unlink(backupname)
  1540         if data_backup is not None:
  1556             if data_backup is not None:
  1541             o.unlink(data_backup[0])
  1557                 o.unlink(data_backup[0])
  1542 
  1558 
  1543     def verify(self, m1, m2):
  1559     def verify(self, m1, m2):
  1544         """check the dirstate content again the parent manifest and yield errors"""
  1560         """check the dirstate content again the parent manifest and yield errors"""
  1545         missing_from_p1 = b"%s in state %s, but not in manifest1\n"
  1561         missing_from_p1 = b"%s in state %s, but not in manifest1\n"
  1546         unexpected_in_p1 = b"%s in state %s, but also in manifest1\n"
  1562         unexpected_in_p1 = b"%s in state %s, but also in manifest1\n"