mercurial/revlog.py
changeset 11962 5f7ee3db3dd8
parent 11935 927ada259634
child 11963 7c3aa579d98a
equal deleted inserted replaced
11961:f3075ffa6b30 11962:5f7ee3db3dd8
  1140         fp.rename()
  1140         fp.rename()
  1141 
  1141 
  1142         tr.replace(self.indexfile, trindex * self._io.size)
  1142         tr.replace(self.indexfile, trindex * self._io.size)
  1143         self._chunkclear()
  1143         self._chunkclear()
  1144 
  1144 
  1145     def addrevision(self, text, transaction, link, p1, p2, d=None):
  1145     def addrevision(self, text, transaction, link, p1, p2, cachedelta=None):
  1146         """add a revision to the log
  1146         """add a revision to the log
  1147 
  1147 
  1148         text - the revision data to add
  1148         text - the revision data to add
  1149         transaction - the transaction object used for rollback
  1149         transaction - the transaction object used for rollback
  1150         link - the linkrev data to add
  1150         link - the linkrev data to add
  1154         dfh = None
  1154         dfh = None
  1155         if not self._inline:
  1155         if not self._inline:
  1156             dfh = self.opener(self.datafile, "a")
  1156             dfh = self.opener(self.datafile, "a")
  1157         ifh = self.opener(self.indexfile, "a+")
  1157         ifh = self.opener(self.indexfile, "a+")
  1158         try:
  1158         try:
  1159             return self._addrevision(text, transaction, link, p1, p2, d, ifh, dfh)
  1159             return self._addrevision(text, transaction, link, p1, p2,
       
  1160                                      cachedelta, ifh, dfh)
  1160         finally:
  1161         finally:
  1161             if dfh:
  1162             if dfh:
  1162                 dfh.close()
  1163                 dfh.close()
  1163             ifh.close()
  1164             ifh.close()
  1164 
  1165 
  1165     def _addrevision(self, text, transaction, link, p1, p2, d, ifh, dfh):
  1166     def _addrevision(self, text, transaction, link, p1, p2,
       
  1167                      cachedelta, ifh, dfh):
  1166         node = hash(text, p1, p2)
  1168         node = hash(text, p1, p2)
  1167         if node in self.nodemap:
  1169         if node in self.nodemap:
  1168             return node
  1170             return node
  1169 
  1171 
  1170         curr = len(self)
  1172         curr = len(self)
  1171         prev = curr - 1
  1173         prev = curr - 1
  1172         base = self.base(prev)
  1174         base = self.base(prev)
  1173         offset = self.end(prev)
  1175         offset = self.end(prev)
  1174         flags = 0
  1176         flags = 0
       
  1177         d = None
  1175 
  1178 
  1176         if curr:
  1179         if curr:
       
  1180             # can we use the cached delta?
       
  1181             if cachedelta:
       
  1182                 cacherev, d = cachedelta
       
  1183                 if cacherev != prev:
       
  1184                     d = None
  1177             if not d:
  1185             if not d:
  1178                 if self._parentdelta:
  1186                 if self._parentdelta:
  1179                     ptext = self.revision(p1)
  1187                     ptext = self.revision(p1)
  1180                     flags = REVIDX_PARENTDELTA
  1188                     flags = REVIDX_PARENTDELTA
  1181                 else:
  1189                 else: