mercurial/transaction.py
branchstable
changeset 23065 963f311e3a81
parent 23064 5dc888b79e70
child 23102 16da812ad970
equal deleted inserted replaced
23064:5dc888b79e70 23065:963f311e3a81
   126 
   126 
   127         d = ''.join(['%s\0%d\n' % (f, o) for f, o in offsets])
   127         d = ''.join(['%s\0%d\n' % (f, o) for f, o in offsets])
   128         self.file.write(d)
   128         self.file.write(d)
   129         self.file.flush()
   129         self.file.flush()
   130 
   130 
   131         d = ''.join(['%s\0%s\0' % (f, b) for f, b in backups])
   131         d = ''.join(['%s\0%s\n' % (f, b) for f, b in backups])
   132         self.backupsfile.write(d)
   132         self.backupsfile.write(d)
   133         self.backupsfile.flush()
   133         self.backupsfile.flush()
   134 
   134 
   135     @active
   135     @active
   136     def add(self, file, offset, data=None):
   136     def add(self, file, offset, data=None):
   175             self._queue[-1][1].append((file, backupfile))
   175             self._queue[-1][1].append((file, backupfile))
   176             return
   176             return
   177 
   177 
   178         self.backupentries.append((file, backupfile, None))
   178         self.backupentries.append((file, backupfile, None))
   179         self.backupmap[file] = len(self.backupentries) - 1
   179         self.backupmap[file] = len(self.backupentries) - 1
   180         self.backupsfile.write("%s\0%s\0" % (file, backupfile))
   180         self.backupsfile.write("%s\0%s\n" % (file, backupfile))
   181         self.backupsfile.flush()
   181         self.backupsfile.flush()
   182 
   182 
   183     @active
   183     @active
   184     def addfilegenerator(self, genid, filenames, genfunc, order=0, vfs=None):
   184     def addfilegenerator(self, genid, filenames, genfunc, order=0, vfs=None):
   185         """add a function to generates some files at transaction commit
   185         """add a function to generates some files at transaction commit
   347             report(_("couldn't read journal entry %r!\n") % l)
   347             report(_("couldn't read journal entry %r!\n") % l)
   348 
   348 
   349     backupjournal = "%s.backupfiles" % file
   349     backupjournal = "%s.backupfiles" % file
   350     if opener.exists(backupjournal):
   350     if opener.exists(backupjournal):
   351         fp = opener.open(backupjournal)
   351         fp = opener.open(backupjournal)
   352         data = fp.read()
   352         lines = fp.readlines()
   353         if len(data) > 0:
   353         if lines:
   354             ver = version
   354             ver = lines[0][:-1]
   355             versionend = data.find('\n')
       
   356             if versionend != -1:
       
   357                 ver = data[:versionend]
       
   358                 data = data[versionend + 1:]
       
   359 
       
   360             if ver == str(version):
   355             if ver == str(version):
   361                 parts = data.split('\0')
   356                 for line in lines[1:]:
   362                 # Skip the final part, since it's just a trailing empty space
   357                     if line:
   363                 for i in xrange(0, len(parts) - 1, 2):
   358                         # Shave off the trailing newline
   364                     f, b = parts[i:i + 2]
   359                         line = line[:-1]
   365                     backupentries.append((f, b, None))
   360                         f, b = line.split('\0')
       
   361                         backupentries.append((f, b, None))
   366             else:
   362             else:
   367                 report(_("journal was created by a newer version of "
   363                 report(_("journal was created by a newer version of "
   368                          "Mercurial"))
   364                          "Mercurial"))
   369 
   365 
   370     _playback(file, report, opener, entries, backupentries)
   366     _playback(file, report, opener, entries, backupentries)