Show More
@@ -59,6 +59,7 b' from . import (' | |||
|
59 | 59 | localrepo, |
|
60 | 60 | lock as lockmod, |
|
61 | 61 | logcmdutil, |
|
62 | mdiff, | |
|
62 | 63 | mergestate as mergestatemod, |
|
63 | 64 | metadata, |
|
64 | 65 | obsolete, |
@@ -990,17 +991,29 b' def debugdeltachain(ui, repo, file_=None' | |||
|
990 | 991 | |
|
991 | 992 | @command( |
|
992 | 993 | b'debug-delta-find', |
|
993 |
cmdutil.debugrevlogopts |
|
|
994 | cmdutil.debugrevlogopts | |
|
995 | + cmdutil.formatteropts | |
|
996 | + [ | |
|
997 | ( | |
|
998 | b'', | |
|
999 | b'source', | |
|
1000 | b'full', | |
|
1001 | _(b'input data feed to the process (full, storage, p1, p2, prev)'), | |
|
1002 | ), | |
|
1003 | ], | |
|
994 | 1004 | _(b'-c|-m|FILE REV'), |
|
995 | 1005 | optionalrepo=True, |
|
996 | 1006 | ) |
|
997 | def debugdeltafind(ui, repo, arg_1, arg_2=None, **opts): | |
|
1007 | def debugdeltafind(ui, repo, arg_1, arg_2=None, source=b'full', **opts): | |
|
998 | 1008 | """display the computation to get to a valid delta for storing REV |
|
999 | 1009 | |
|
1000 | 1010 | This command will replay the process used to find the "best" delta to store |
|
1001 | 1011 | a revision and display information about all the steps used to get to that |
|
1002 | 1012 | result. |
|
1003 | 1013 | |
|
1014 | By default, the process is fed with a the full-text for the revision. This | |
|
1015 | can be controlled with the --source flag. | |
|
1016 | ||
|
1004 | 1017 | The revision use the revision number of the target storage (not changelog |
|
1005 | 1018 | revision number). |
|
1006 | 1019 | |
@@ -1028,11 +1041,31 b' def debugdeltafind(ui, repo, arg_1, arg_' | |||
|
1028 | 1041 | p1r, p2r = revlog.parentrevs(rev) |
|
1029 | 1042 | p1 = revlog.node(p1r) |
|
1030 | 1043 | p2 = revlog.node(p2r) |
|
1031 |
|
|
|
1044 | full_text = revlog.revision(rev) | |
|
1045 | btext = [full_text] | |
|
1032 | 1046 | textlen = len(btext[0]) |
|
1033 | 1047 | cachedelta = None |
|
1034 | 1048 | flags = revlog.flags(rev) |
|
1035 | 1049 | |
|
1050 | if source != b'full': | |
|
1051 | if source == b'storage': | |
|
1052 | base_rev = revlog.deltaparent(rev) | |
|
1053 | elif source == b'p1': | |
|
1054 | base_rev = p1r | |
|
1055 | elif source == b'p2': | |
|
1056 | base_rev = p2r | |
|
1057 | elif source == b'prev': | |
|
1058 | base_rev = rev - 1 | |
|
1059 | else: | |
|
1060 | raise error.InputError(b"invalid --source value: %s" % source) | |
|
1061 | ||
|
1062 | if base_rev != nullrev: | |
|
1063 | base_text = revlog.revision(base_rev) | |
|
1064 | delta = mdiff.textdiff(base_text, full_text) | |
|
1065 | ||
|
1066 | cachedelta = (base_rev, delta) | |
|
1067 | btext = [None] | |
|
1068 | ||
|
1036 | 1069 | revinfo = revlogutils.revisioninfo( |
|
1037 | 1070 | node, |
|
1038 | 1071 | p1, |
@@ -268,7 +268,7 b' Show all commands + options' | |||
|
268 | 268 | config: untrusted, exp-all-known, edit, local, source, shared, non-shared, global, template |
|
269 | 269 | continue: dry-run |
|
270 | 270 | copy: forget, after, at-rev, force, include, exclude, dry-run |
|
271 | debug-delta-find: changelog, manifest, dir, template | |
|
271 | debug-delta-find: changelog, manifest, dir, template, source | |
|
272 | 272 | debug-repair-issue6528: to-report, from-report, paranoid, dry-run |
|
273 | 273 | debug-revlog-index: changelog, manifest, dir, template |
|
274 | 274 | debugancestor: |
@@ -191,4 +191,156 b' Test `debug-delta-find`' | |||
|
191 | 191 | DBG-DELTAS-SEARCH: DELTA: length=49132 (BAD) |
|
192 | 192 | DBG-DELTAS: FILELOG:SPARSE-REVLOG-TEST-FILE: rev=4971: search-rounds=3 try-count=3 - delta-type=snapshot snap-depth=4 - p1-chain-length=15 p2-chain-length=-1 - duration=* (glob) |
|
193 | 193 | |
|
194 | $ cat << EOF >>.hg/hgrc | |
|
195 | > [storage] | |
|
196 | > revlog.optimize-delta-parent-choice = no | |
|
197 | > revlog.reuse-external-delta = yes | |
|
198 | > EOF | |
|
199 | ||
|
200 | $ hg debug-delta-find SPARSE-REVLOG-TEST-FILE 4971 --quiet | |
|
201 | DBG-DELTAS: FILELOG:SPARSE-REVLOG-TEST-FILE: rev=4971: search-rounds=3 try-count=3 - delta-type=snapshot snap-depth=4 - p1-chain-length=15 p2-chain-length=-1 - duration=* (glob) | |
|
202 | $ hg debug-delta-find SPARSE-REVLOG-TEST-FILE 4971 --source full | |
|
203 | DBG-DELTAS-SEARCH: SEARCH rev=4971 | |
|
204 | DBG-DELTAS-SEARCH: ROUND #1 - 2 candidates - search-down | |
|
205 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4962 | |
|
206 | DBG-DELTAS-SEARCH: type=snapshot-4 | |
|
207 | DBG-DELTAS-SEARCH: size=18296 | |
|
208 | DBG-DELTAS-SEARCH: base=4930 | |
|
209 | DBG-DELTAS-SEARCH: uncompressed-delta-size=30377 | |
|
210 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
211 | DBG-DELTAS-SEARCH: DELTA: length=16872 (BAD) | |
|
212 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4971 | |
|
213 | DBG-DELTAS-SEARCH: type=snapshot-4 | |
|
214 | DBG-DELTAS-SEARCH: size=19179 | |
|
215 | DBG-DELTAS-SEARCH: base=4930 | |
|
216 | DBG-DELTAS-SEARCH: TOO-HIGH | |
|
217 | DBG-DELTAS-SEARCH: ROUND #2 - 1 candidates - search-down | |
|
218 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4930 | |
|
219 | DBG-DELTAS-SEARCH: type=snapshot-3 | |
|
220 | DBG-DELTAS-SEARCH: size=39228 | |
|
221 | DBG-DELTAS-SEARCH: base=4799 | |
|
222 | DBG-DELTAS-SEARCH: uncompressed-delta-size=33050 | |
|
223 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
224 | DBG-DELTAS-SEARCH: DELTA: length=19179 (GOOD) | |
|
225 | DBG-DELTAS-SEARCH: ROUND #3 - 1 candidates - refine-down | |
|
226 | DBG-DELTAS-SEARCH: CONTENDER: rev=4930 - length=19179 | |
|
227 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4799 | |
|
228 | DBG-DELTAS-SEARCH: type=snapshot-2 | |
|
229 | DBG-DELTAS-SEARCH: size=50213 | |
|
230 | DBG-DELTAS-SEARCH: base=4623 | |
|
231 | DBG-DELTAS-SEARCH: uncompressed-delta-size=82661 | |
|
232 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
233 | DBG-DELTAS-SEARCH: DELTA: length=49132 (BAD) | |
|
234 | DBG-DELTAS: FILELOG:SPARSE-REVLOG-TEST-FILE: rev=4971: search-rounds=3 try-count=3 - delta-type=snapshot snap-depth=4 - p1-chain-length=15 p2-chain-length=-1 - duration=* (glob) | |
|
235 | $ hg debug-delta-find SPARSE-REVLOG-TEST-FILE 4971 --source storage | |
|
236 | DBG-DELTAS-SEARCH: SEARCH rev=4971 | |
|
237 | DBG-DELTAS-SEARCH: ROUND #1 - 1 candidates - search-down | |
|
238 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4930 | |
|
239 | DBG-DELTAS-SEARCH: type=snapshot-3 | |
|
240 | DBG-DELTAS-SEARCH: size=39228 | |
|
241 | DBG-DELTAS-SEARCH: base=4799 | |
|
242 | DBG-DELTAS-SEARCH: uncompressed-delta-size=33050 | |
|
243 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
244 | DBG-DELTAS-SEARCH: DELTA: length=19179 (GOOD) | |
|
245 | DBG-DELTAS: FILELOG:SPARSE-REVLOG-TEST-FILE: rev=4971: search-rounds=1 try-count=1 - delta-type=snapshot snap-depth=4 - p1-chain-length=15 p2-chain-length=-1 - duration=* (glob) | |
|
246 | $ hg debug-delta-find SPARSE-REVLOG-TEST-FILE 4971 --source p1 | |
|
247 | DBG-DELTAS-SEARCH: SEARCH rev=4971 | |
|
248 | DBG-DELTAS-SEARCH: ROUND #1 - 2 candidates - search-down | |
|
249 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4962 | |
|
250 | DBG-DELTAS-SEARCH: type=snapshot-4 | |
|
251 | DBG-DELTAS-SEARCH: size=18296 | |
|
252 | DBG-DELTAS-SEARCH: base=4930 | |
|
253 | DBG-DELTAS-SEARCH: uncompressed-delta-size=30377 | |
|
254 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
255 | DBG-DELTAS-SEARCH: DELTA: length=16872 (BAD) | |
|
256 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4971 | |
|
257 | DBG-DELTAS-SEARCH: type=snapshot-4 | |
|
258 | DBG-DELTAS-SEARCH: size=19179 | |
|
259 | DBG-DELTAS-SEARCH: base=4930 | |
|
260 | DBG-DELTAS-SEARCH: TOO-HIGH | |
|
261 | DBG-DELTAS-SEARCH: ROUND #2 - 1 candidates - search-down | |
|
262 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4930 | |
|
263 | DBG-DELTAS-SEARCH: type=snapshot-3 | |
|
264 | DBG-DELTAS-SEARCH: size=39228 | |
|
265 | DBG-DELTAS-SEARCH: base=4799 | |
|
266 | DBG-DELTAS-SEARCH: uncompressed-delta-size=33050 | |
|
267 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
268 | DBG-DELTAS-SEARCH: DELTA: length=19179 (GOOD) | |
|
269 | DBG-DELTAS-SEARCH: ROUND #3 - 1 candidates - refine-down | |
|
270 | DBG-DELTAS-SEARCH: CONTENDER: rev=4930 - length=19179 | |
|
271 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4799 | |
|
272 | DBG-DELTAS-SEARCH: type=snapshot-2 | |
|
273 | DBG-DELTAS-SEARCH: size=50213 | |
|
274 | DBG-DELTAS-SEARCH: base=4623 | |
|
275 | DBG-DELTAS-SEARCH: uncompressed-delta-size=82661 | |
|
276 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
277 | DBG-DELTAS-SEARCH: DELTA: length=49132 (BAD) | |
|
278 | DBG-DELTAS: FILELOG:SPARSE-REVLOG-TEST-FILE: rev=4971: search-rounds=3 try-count=3 - delta-type=snapshot snap-depth=4 - p1-chain-length=15 p2-chain-length=-1 - duration=* (glob) | |
|
279 | $ hg debug-delta-find SPARSE-REVLOG-TEST-FILE 4971 --source p2 | |
|
280 | DBG-DELTAS-SEARCH: SEARCH rev=4971 | |
|
281 | DBG-DELTAS-SEARCH: ROUND #1 - 2 candidates - search-down | |
|
282 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4962 | |
|
283 | DBG-DELTAS-SEARCH: type=snapshot-4 | |
|
284 | DBG-DELTAS-SEARCH: size=18296 | |
|
285 | DBG-DELTAS-SEARCH: base=4930 | |
|
286 | DBG-DELTAS-SEARCH: uncompressed-delta-size=30377 | |
|
287 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
288 | DBG-DELTAS-SEARCH: DELTA: length=16872 (BAD) | |
|
289 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4971 | |
|
290 | DBG-DELTAS-SEARCH: type=snapshot-4 | |
|
291 | DBG-DELTAS-SEARCH: size=19179 | |
|
292 | DBG-DELTAS-SEARCH: base=4930 | |
|
293 | DBG-DELTAS-SEARCH: TOO-HIGH | |
|
294 | DBG-DELTAS-SEARCH: ROUND #2 - 1 candidates - search-down | |
|
295 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4930 | |
|
296 | DBG-DELTAS-SEARCH: type=snapshot-3 | |
|
297 | DBG-DELTAS-SEARCH: size=39228 | |
|
298 | DBG-DELTAS-SEARCH: base=4799 | |
|
299 | DBG-DELTAS-SEARCH: uncompressed-delta-size=33050 | |
|
300 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
301 | DBG-DELTAS-SEARCH: DELTA: length=19179 (GOOD) | |
|
302 | DBG-DELTAS-SEARCH: ROUND #3 - 1 candidates - refine-down | |
|
303 | DBG-DELTAS-SEARCH: CONTENDER: rev=4930 - length=19179 | |
|
304 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4799 | |
|
305 | DBG-DELTAS-SEARCH: type=snapshot-2 | |
|
306 | DBG-DELTAS-SEARCH: size=50213 | |
|
307 | DBG-DELTAS-SEARCH: base=4623 | |
|
308 | DBG-DELTAS-SEARCH: uncompressed-delta-size=82661 | |
|
309 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
310 | DBG-DELTAS-SEARCH: DELTA: length=49132 (BAD) | |
|
311 | DBG-DELTAS: FILELOG:SPARSE-REVLOG-TEST-FILE: rev=4971: search-rounds=3 try-count=3 - delta-type=snapshot snap-depth=4 - p1-chain-length=15 p2-chain-length=-1 - duration=* (glob) | |
|
312 | $ hg debug-delta-find SPARSE-REVLOG-TEST-FILE 4971 --source prev | |
|
313 | DBG-DELTAS-SEARCH: SEARCH rev=4971 | |
|
314 | DBG-DELTAS-SEARCH: ROUND #1 - 2 candidates - search-down | |
|
315 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4962 | |
|
316 | DBG-DELTAS-SEARCH: type=snapshot-4 | |
|
317 | DBG-DELTAS-SEARCH: size=18296 | |
|
318 | DBG-DELTAS-SEARCH: base=4930 | |
|
319 | DBG-DELTAS-SEARCH: uncompressed-delta-size=30377 | |
|
320 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
321 | DBG-DELTAS-SEARCH: DELTA: length=16872 (BAD) | |
|
322 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4971 | |
|
323 | DBG-DELTAS-SEARCH: type=snapshot-4 | |
|
324 | DBG-DELTAS-SEARCH: size=19179 | |
|
325 | DBG-DELTAS-SEARCH: base=4930 | |
|
326 | DBG-DELTAS-SEARCH: TOO-HIGH | |
|
327 | DBG-DELTAS-SEARCH: ROUND #2 - 1 candidates - search-down | |
|
328 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4930 | |
|
329 | DBG-DELTAS-SEARCH: type=snapshot-3 | |
|
330 | DBG-DELTAS-SEARCH: size=39228 | |
|
331 | DBG-DELTAS-SEARCH: base=4799 | |
|
332 | DBG-DELTAS-SEARCH: uncompressed-delta-size=33050 | |
|
333 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
334 | DBG-DELTAS-SEARCH: DELTA: length=19179 (GOOD) | |
|
335 | DBG-DELTAS-SEARCH: ROUND #3 - 1 candidates - refine-down | |
|
336 | DBG-DELTAS-SEARCH: CONTENDER: rev=4930 - length=19179 | |
|
337 | DBG-DELTAS-SEARCH: CANDIDATE: rev=4799 | |
|
338 | DBG-DELTAS-SEARCH: type=snapshot-2 | |
|
339 | DBG-DELTAS-SEARCH: size=50213 | |
|
340 | DBG-DELTAS-SEARCH: base=4623 | |
|
341 | DBG-DELTAS-SEARCH: uncompressed-delta-size=82661 | |
|
342 | DBG-DELTAS-SEARCH: delta-search-time=* (glob) | |
|
343 | DBG-DELTAS-SEARCH: DELTA: length=49132 (BAD) | |
|
344 | DBG-DELTAS: FILELOG:SPARSE-REVLOG-TEST-FILE: rev=4971: search-rounds=3 try-count=3 - delta-type=snapshot snap-depth=4 - p1-chain-length=15 p2-chain-length=-1 - duration=* (glob) | |
|
345 | ||
|
194 | 346 | $ cd .. |
General Comments 0
You need to be logged in to leave comments.
Login now