mercurial/revlog.py
changeset 39333 5d343a24bff5
parent 39332 6f4b8f607a31
child 39767 db088e133e91
equal deleted inserted replaced
39332:6f4b8f607a31 39333:5d343a24bff5
  1965 
  1965 
  1966         revinfo = _revisioninfo(node, p1, p2, btext, textlen, cachedelta, flags)
  1966         revinfo = _revisioninfo(node, p1, p2, btext, textlen, cachedelta, flags)
  1967 
  1967 
  1968         deltainfo = deltacomputer.finddeltainfo(revinfo, fh)
  1968         deltainfo = deltacomputer.finddeltainfo(revinfo, fh)
  1969 
  1969 
  1970         if deltainfo is not None:
  1970         e = (offset_type(offset, flags), deltainfo.deltalen, textlen,
  1971             base = deltainfo.base
  1971              deltainfo.base, link, p1r, p2r, node)
  1972             chainbase = deltainfo.chainbase
       
  1973             data = deltainfo.data
       
  1974             l = deltainfo.deltalen
       
  1975         else:
       
  1976             rawtext = deltacomputer.buildtext(revinfo, fh)
       
  1977             data = self.compress(rawtext)
       
  1978             l = len(data[1]) + len(data[0])
       
  1979             base = chainbase = curr
       
  1980 
       
  1981         e = (offset_type(offset, flags), l, textlen,
       
  1982              base, link, p1r, p2r, node)
       
  1983         self.index.append(e)
  1972         self.index.append(e)
  1984         self.nodemap[node] = curr
  1973         self.nodemap[node] = curr
  1985 
  1974 
  1986         entry = self._io.packentry(e, self.node, self.version, curr)
  1975         entry = self._io.packentry(e, self.node, self.version, curr)
  1987         self._writeentry(transaction, ifh, dfh, entry, data, link, offset)
  1976         self._writeentry(transaction, ifh, dfh, entry, deltainfo.data,
       
  1977                          link, offset)
       
  1978 
       
  1979         rawtext = btext[0]
  1988 
  1980 
  1989         if alwayscache and rawtext is None:
  1981         if alwayscache and rawtext is None:
  1990             rawtext = deltacomputer.buildtext(revinfo, fh)
  1982             rawtext = deltacomputer.buildtext(revinfo, fh)
  1991 
  1983 
  1992         if type(rawtext) == bytes: # only accept immutable objects
  1984         if type(rawtext) == bytes: # only accept immutable objects
  1993             self._cache = (node, curr, rawtext)
  1985             self._cache = (node, curr, rawtext)
  1994         self._chainbasecache[curr] = chainbase
  1986         self._chainbasecache[curr] = deltainfo.chainbase
  1995         return node
  1987         return node
  1996 
  1988 
  1997     def _writeentry(self, transaction, ifh, dfh, entry, data, link, offset):
  1989     def _writeentry(self, transaction, ifh, dfh, entry, data, link, offset):
  1998         # Files opened in a+ mode have inconsistent behavior on various
  1990         # Files opened in a+ mode have inconsistent behavior on various
  1999         # platforms. Windows requires that a file positioning call be made
  1991         # platforms. Windows requires that a file positioning call be made