mercurial/revlog.py
changeset 2084 d66278012853
parent 2082 856f0ba200bc
child 2089 cb99c711c59f
equal deleted inserted replaced
2083:345107e167a0 2084:d66278012853
   824             fp = self.opener(self.indexfile, 'r')
   824             fp = self.opener(self.indexfile, 'r')
   825             fp.seek(0, 2)
   825             fp.seek(0, 2)
   826         size = fp.tell()
   826         size = fp.tell()
   827         if size < 131072:
   827         if size < 131072:
   828             return
   828             return
   829         tr.add(self.datafile, 0)
   829         trinfo = tr.find(self.indexfile)
       
   830         if trinfo == None:
       
   831             raise RevlogError(_("%s not found in the transaction"  %
       
   832                               self.indexfile))
       
   833 
       
   834         trindex = trinfo[2]
       
   835         dataoff = self.start(trindex)
       
   836 
       
   837         tr.add(self.datafile, dataoff)
   830         df = self.opener(self.datafile, 'w')
   838         df = self.opener(self.datafile, 'w')
   831         calc = struct.calcsize(self.indexformat)
   839         calc = struct.calcsize(self.indexformat)
   832         for r in xrange(self.count()):
   840         for r in xrange(self.count()):
   833             start = self.start(r) + (r + 1) * calc
   841             start = self.start(r) + (r + 1) * calc
   834             length = self.length(r)
   842             length = self.length(r)
   852             fp.write(e)
   860             fp.write(e)
   853 
   861 
   854         # if we don't call rename, the temp file will never replace the
   862         # if we don't call rename, the temp file will never replace the
   855         # real index
   863         # real index
   856         fp.rename()
   864         fp.rename()
       
   865 
       
   866         tr.replace(self.indexfile, trindex * calc)
   857         self.chunkcache = None
   867         self.chunkcache = None
   858 
   868 
   859     def addrevision(self, text, transaction, link, p1=None, p2=None, d=None):
   869     def addrevision(self, text, transaction, link, p1=None, p2=None, d=None):
   860         """add a revision to the log
   870         """add a revision to the log
   861 
   871 
   920             f.write(data[1])
   930             f.write(data[1])
   921             f = self.opener(self.indexfile, "a")
   931             f = self.opener(self.indexfile, "a")
   922         else:
   932         else:
   923             f = self.opener(self.indexfile, "a+")
   933             f = self.opener(self.indexfile, "a+")
   924             f.seek(0, 2)
   934             f.seek(0, 2)
   925             transaction.add(self.indexfile, f.tell())
   935             transaction.add(self.indexfile, f.tell(), self.count() - 1)
   926 
   936 
   927         if len(self.index) == 1 and self.version != 0:
   937         if len(self.index) == 1 and self.version != 0:
   928             l = struct.pack(versionformat, self.version)
   938             l = struct.pack(versionformat, self.version)
   929             f.write(l)
   939             f.write(l)
   930             entry = entry[4:]
   940             entry = entry[4:]
  1069         if r:
  1079         if r:
  1070             end = self.end(t)
  1080             end = self.end(t)
  1071 
  1081 
  1072         ifh = self.opener(self.indexfile, "a+")
  1082         ifh = self.opener(self.indexfile, "a+")
  1073         ifh.seek(0, 2)
  1083         ifh.seek(0, 2)
  1074         transaction.add(self.indexfile, ifh.tell())
  1084         transaction.add(self.indexfile, ifh.tell(), self.count())
  1075         if self.inlinedata():
  1085         if self.inlinedata():
  1076             dfh = None
  1086             dfh = None
  1077         else:
  1087         else:
  1078             transaction.add(self.datafile, end)
  1088             transaction.add(self.datafile, end)
  1079             dfh = self.opener(self.datafile, "a")
  1089             dfh = self.opener(self.datafile, "a")