mercurial/revlogutils/deltas.py
changeset 49681 c261a628e525
parent 49680 40e24d82b513
child 49768 bcae90c53def
equal deleted inserted replaced
49680:40e24d82b513 49681:c261a628e525
   662     p1,
   662     p1,
   663     p2,
   663     p2,
   664     cachedelta,
   664     cachedelta,
   665     excluded_bases=None,
   665     excluded_bases=None,
   666     target_rev=None,
   666     target_rev=None,
       
   667     snapshot_cache=None,
   667 ):
   668 ):
   668     """Provides group of revision to be tested as delta base
   669     """Provides group of revision to be tested as delta base
   669 
   670 
   670     This top level function focus on emitting groups with unique and worthwhile
   671     This top level function focus on emitting groups with unique and worthwhile
   671     content. See _raw_candidate_groups for details about the group order.
   672     content. See _raw_candidate_groups for details about the group order.
   687     candidates = _refinedgroups(
   688     candidates = _refinedgroups(
   688         revlog,
   689         revlog,
   689         p1,
   690         p1,
   690         p2,
   691         p2,
   691         cachedelta,
   692         cachedelta,
       
   693         snapshot_cache=snapshot_cache,
   692     )
   694     )
   693     while True:
   695     while True:
   694         temptative = candidates.send(good)
   696         temptative = candidates.send(good)
   695         if temptative is None:
   697         if temptative is None:
   696             break
   698             break
   797                         break
   799                         break
   798 
   800 
   799     yield None
   801     yield None
   800 
   802 
   801 
   803 
   802 def _refinedgroups(revlog, p1, p2, cachedelta):
   804 def _refinedgroups(revlog, p1, p2, cachedelta, snapshot_cache=None):
   803     good = None
   805     good = None
   804     # First we try to reuse a the delta contained in the bundle.
   806     # First we try to reuse a the delta contained in the bundle.
   805     # (or from the source revlog)
   807     # (or from the source revlog)
   806     #
   808     #
   807     # This logic only applies to general delta repositories and can be disabled
   809     # This logic only applies to general delta repositories and can be disabled
   817         if good is not None:
   819         if good is not None:
   818             if debug_info is not None:
   820             if debug_info is not None:
   819                 debug_info['cached-delta.accepted'] += 1
   821                 debug_info['cached-delta.accepted'] += 1
   820             yield None
   822             yield None
   821             return
   823             return
   822     # XXX cache me higher
   824     if snapshot_cache is None:
   823     snapshot_cache = SnapshotCache()
   825         snapshot_cache = SnapshotCache()
   824     groups = _rawgroups(
   826     groups = _rawgroups(
   825         revlog,
   827         revlog,
   826         p1,
   828         p1,
   827         p2,
   829         p2,
   828         cachedelta,
   830         cachedelta,
  1051     ):
  1053     ):
  1052         self.revlog = revlog
  1054         self.revlog = revlog
  1053         self._write_debug = write_debug
  1055         self._write_debug = write_debug
  1054         self._debug_search = debug_search
  1056         self._debug_search = debug_search
  1055         self._debug_info = debug_info
  1057         self._debug_info = debug_info
       
  1058         self._snapshot_cache = SnapshotCache()
  1056 
  1059 
  1057     def buildtext(self, revinfo, fh):
  1060     def buildtext(self, revinfo, fh):
  1058         """Builds a fulltext version of a revision
  1061         """Builds a fulltext version of a revision
  1059 
  1062 
  1060         revinfo: revisioninfo instance that contains all needed info
  1063         revinfo: revisioninfo instance that contains all needed info
  1263             p1r,
  1266             p1r,
  1264             p2r,
  1267             p2r,
  1265             cachedelta,
  1268             cachedelta,
  1266             excluded_bases,
  1269             excluded_bases,
  1267             target_rev,
  1270             target_rev,
       
  1271             snapshot_cache=self._snapshot_cache,
  1268         )
  1272         )
  1269         candidaterevs = next(groups)
  1273         candidaterevs = next(groups)
  1270         while candidaterevs is not None:
  1274         while candidaterevs is not None:
  1271             dbg_try_rounds += 1
  1275             dbg_try_rounds += 1
  1272             if debug_search:
  1276             if debug_search: