mercurial/revlog.py
changeset 41857 afd37ed731f1
parent 41819 688fc33e105d
child 41872 3f3f962457b2
equal deleted inserted replaced
41856:90eddb679521 41857:afd37ed731f1
  2394         if getattr(self, 'filteredrevs', None):
  2394         if getattr(self, 'filteredrevs', None):
  2395             raise ValueError(_('source revlog has filtered revisions'))
  2395             raise ValueError(_('source revlog has filtered revisions'))
  2396         if getattr(destrevlog, 'filteredrevs', None):
  2396         if getattr(destrevlog, 'filteredrevs', None):
  2397             raise ValueError(_('destination revlog has filtered revisions'))
  2397             raise ValueError(_('destination revlog has filtered revisions'))
  2398 
  2398 
  2399         # lazydeltabase controls whether to reuse a cached delta, if possible.
  2399         # lazydelta and lazydeltabase controls whether to reuse a cached delta,
       
  2400         # if possible.
       
  2401         oldlazydelta = destrevlog._lazydelta
  2400         oldlazydeltabase = destrevlog._lazydeltabase
  2402         oldlazydeltabase = destrevlog._lazydeltabase
  2401         oldamd = destrevlog._deltabothparents
  2403         oldamd = destrevlog._deltabothparents
  2402 
  2404 
  2403         try:
  2405         try:
  2404             if deltareuse == self.DELTAREUSEALWAYS:
  2406             if deltareuse == self.DELTAREUSEALWAYS:
  2405                 destrevlog._lazydeltabase = True
  2407                 destrevlog._lazydeltabase = True
       
  2408                 destrevlog._lazydelta = True
  2406             elif deltareuse == self.DELTAREUSESAMEREVS:
  2409             elif deltareuse == self.DELTAREUSESAMEREVS:
  2407                 destrevlog._lazydeltabase = False
  2410                 destrevlog._lazydeltabase = False
       
  2411                 destrevlog._lazydelta = True
       
  2412             elif deltareuse == self.DELTAREUSENEVER:
       
  2413                 destrevlog._lazydeltabase = False
       
  2414                 destrevlog._lazydelta = False
  2408 
  2415 
  2409             destrevlog._deltabothparents = forcedeltabothparents or oldamd
  2416             destrevlog._deltabothparents = forcedeltabothparents or oldamd
  2410 
       
  2411             populatecachedelta = deltareuse in (self.DELTAREUSEALWAYS,
       
  2412                                                 self.DELTAREUSESAMEREVS)
       
  2413 
  2417 
  2414             deltacomputer = deltautil.deltacomputer(destrevlog)
  2418             deltacomputer = deltautil.deltacomputer(destrevlog)
  2415             index = self.index
  2419             index = self.index
  2416             for rev in self:
  2420             for rev in self:
  2417                 entry = index[rev]
  2421                 entry = index[rev]
  2426 
  2430 
  2427                 # (Possibly) reuse the delta from the revlog if allowed and
  2431                 # (Possibly) reuse the delta from the revlog if allowed and
  2428                 # the revlog chunk is a delta.
  2432                 # the revlog chunk is a delta.
  2429                 cachedelta = None
  2433                 cachedelta = None
  2430                 rawtext = None
  2434                 rawtext = None
  2431                 if populatecachedelta:
  2435                 if destrevlog._lazydelta:
  2432                     dp = self.deltaparent(rev)
  2436                     dp = self.deltaparent(rev)
  2433                     if dp != nullrev:
  2437                     if dp != nullrev:
  2434                         cachedelta = (dp, bytes(self._chunk(rev)))
  2438                         cachedelta = (dp, bytes(self._chunk(rev)))
  2435 
  2439 
  2436                 if not cachedelta:
  2440                 if not cachedelta:
  2458                         ifh.close()
  2462                         ifh.close()
  2459 
  2463 
  2460                 if addrevisioncb:
  2464                 if addrevisioncb:
  2461                     addrevisioncb(self, rev, node)
  2465                     addrevisioncb(self, rev, node)
  2462         finally:
  2466         finally:
       
  2467             destrevlog._lazydelta = oldlazydelta
  2463             destrevlog._lazydeltabase = oldlazydeltabase
  2468             destrevlog._lazydeltabase = oldlazydeltabase
  2464             destrevlog._deltabothparents = oldamd
  2469             destrevlog._deltabothparents = oldamd
  2465 
  2470 
  2466     def censorrevision(self, tr, censornode, tombstone=b''):
  2471     def censorrevision(self, tr, censornode, tombstone=b''):
  2467         if (self.version & 0xFFFF) == REVLOGV0:
  2472         if (self.version & 0xFFFF) == REVLOGV0: