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) |