mercurial/revlogutils/deltas.py
branchstable
changeset 50356 2a6949ab9d23
parent 50355 0232571255d3
child 50357 8038493eb31a
equal deleted inserted replaced
50355:0232571255d3 50356:2a6949ab9d23
  1133             ptext = revlog.rawdata(base, _df=fh)
  1133             ptext = revlog.rawdata(base, _df=fh)
  1134             delta = mdiff.textdiff(ptext, t)
  1134             delta = mdiff.textdiff(ptext, t)
  1135 
  1135 
  1136         return delta
  1136         return delta
  1137 
  1137 
  1138     def _builddeltainfo(self, revinfo, base, fh):
  1138     def _builddeltainfo(self, revinfo, base, fh, target_rev=None):
  1139         # can we use the cached delta?
  1139         # can we use the cached delta?
  1140         revlog = self.revlog
  1140         revlog = self.revlog
  1141         debug_search = self._write_debug is not None and self._debug_search
  1141         debug_search = self._write_debug is not None and self._debug_search
  1142         chainbase = revlog.chainbase(base)
  1142         chainbase = revlog.chainbase(base)
  1143         if revlog._generaldelta:
  1143         if revlog._generaldelta:
  1144             deltabase = base
  1144             deltabase = base
  1145         else:
  1145         else:
       
  1146             if target_rev is not None and base != target_rev - 1:
       
  1147                 msg = (
       
  1148                     b'general delta cannot use delta for something else '
       
  1149                     b'than `prev`: %d<-%d'
       
  1150                 )
       
  1151                 msg %= (base, target_rev)
       
  1152                 raise error.ProgrammingError(msg)
  1146             deltabase = chainbase
  1153             deltabase = chainbase
  1147         snapshotdepth = None
  1154         snapshotdepth = None
  1148         if revlog._sparserevlog and deltabase == nullrev:
  1155         if revlog._sparserevlog and deltabase == nullrev:
  1149             snapshotdepth = 0
  1156             snapshotdepth = 0
  1150         elif revlog._sparserevlog and revlog.issnapshot(deltabase):
  1157         elif revlog._sparserevlog and revlog.issnapshot(deltabase):
  1371 
  1378 
  1372                 dbg_try_count += 1
  1379                 dbg_try_count += 1
  1373 
  1380 
  1374                 if debug_search:
  1381                 if debug_search:
  1375                     delta_start = util.timer()
  1382                     delta_start = util.timer()
  1376                 candidatedelta = self._builddeltainfo(revinfo, candidaterev, fh)
  1383                 candidatedelta = self._builddeltainfo(
       
  1384                     revinfo,
       
  1385                     candidaterev,
       
  1386                     fh,
       
  1387                     target_rev=target_rev,
       
  1388                 )
  1377                 if debug_search:
  1389                 if debug_search:
  1378                     delta_end = util.timer()
  1390                     delta_end = util.timer()
  1379                     msg = b"DBG-DELTAS-SEARCH:     delta-search-time=%f\n"
  1391                     msg = b"DBG-DELTAS-SEARCH:     delta-search-time=%f\n"
  1380                     msg %= delta_end - delta_start
  1392                     msg %= delta_end - delta_start
  1381                     self._write_debug(msg)
  1393                     self._write_debug(msg)