# HG changeset patch # User Pierre-Yves David # Date 1615823703 -3600 # Node ID 3a8cf5b9c8204aec5212d5aaf6263c66ce823a4b # Parent 36b4640ccb6a8ecbee0a97d878a7f42b38e11f80 debugdiscovery: add support for Json output They are some pre-output that will be impractical, I'll take care of it in the next changeset. Differential Revision: https://phab.mercurial-scm.org/D10223 diff -r 36b4640ccb6a -r 3a8cf5b9c820 mercurial/debugcommands.py --- a/mercurial/debugcommands.py Mon Mar 15 16:37:11 2021 +0100 +++ b/mercurial/debugcommands.py Mon Mar 15 16:55:03 2021 +0100 @@ -998,7 +998,8 @@ 'use local as remote, with only these these revisions', ), ] - + cmdutil.remoteopts, + + cmdutil.remoteopts + + cmdutil.formatteropts, _(b'[--rev REV] [OTHER]'), ) def debugdiscovery(ui, repo, remoteurl=b"default", **opts): @@ -1140,50 +1141,42 @@ data[b'nb-ini_und-common'] = len(common_initial_undecided) data[b'nb-ini_und-missing'] = len(missing_initial_undecided) + fm = ui.formatter(b'debugdiscovery', opts) + fm.startitem() + fm.data(**pycompat.strkwargs(data)) # display discovery summary - ui.writenoi18n(b"elapsed time: %(elapsed)f seconds\n" % data) - ui.writenoi18n(b"round-trips: %(total-roundtrips)9d\n" % data) - ui.writenoi18n(b"heads summary:\n") - ui.writenoi18n(b" total common heads: %(nb-common-heads)9d\n" % data) - ui.writenoi18n( - b" also local heads: %(nb-common-heads-local)9d\n" % data - ) - ui.writenoi18n( - b" also remote heads: %(nb-common-heads-remote)9d\n" % data - ) - ui.writenoi18n(b" both: %(nb-common-heads-both)9d\n" % data) - ui.writenoi18n(b" local heads: %(nb-head-local)9d\n" % data) - ui.writenoi18n( - b" common: %(nb-common-heads-local)9d\n" % data - ) - ui.writenoi18n( - b" missing: %(nb-head-local-missing)9d\n" % data - ) - ui.writenoi18n(b" remote heads: %(nb-head-remote)9d\n" % data) - ui.writenoi18n( - b" common: %(nb-common-heads-remote)9d\n" % data - ) - ui.writenoi18n( - b" unknown: %(nb-head-remote-unknown)9d\n" % data - ) - ui.writenoi18n(b"local changesets: %(nb-revs)9d\n" % data) - ui.writenoi18n(b" common: %(nb-revs-common)9d\n" % data) - ui.writenoi18n(b" heads: %(nb-common-heads)9d\n" % data) - ui.writenoi18n(b" roots: %(nb-common-roots)9d\n" % data) - ui.writenoi18n(b" missing: %(nb-revs-missing)9d\n" % data) - ui.writenoi18n(b" heads: %(nb-missing-heads)9d\n" % data) - ui.writenoi18n(b" roots: %(nb-missing-roots)9d\n" % data) - ui.writenoi18n(b" first undecided set: %(nb-ini_und)9d\n" % data) - ui.writenoi18n(b" heads: %(nb-ini_und-heads)9d\n" % data) - ui.writenoi18n(b" roots: %(nb-ini_und-roots)9d\n" % data) - ui.writenoi18n(b" common: %(nb-ini_und-common)9d\n" % data) - ui.writenoi18n(b" missing: %(nb-ini_und-missing)9d\n" % data) + fm.plain(b"elapsed time: %(elapsed)f seconds\n" % data) + fm.plain(b"round-trips: %(total-roundtrips)9d\n" % data) + fm.plain(b"heads summary:\n") + fm.plain(b" total common heads: %(nb-common-heads)9d\n" % data) + fm.plain(b" also local heads: %(nb-common-heads-local)9d\n" % data) + fm.plain(b" also remote heads: %(nb-common-heads-remote)9d\n" % data) + fm.plain(b" both: %(nb-common-heads-both)9d\n" % data) + fm.plain(b" local heads: %(nb-head-local)9d\n" % data) + fm.plain(b" common: %(nb-common-heads-local)9d\n" % data) + fm.plain(b" missing: %(nb-head-local-missing)9d\n" % data) + fm.plain(b" remote heads: %(nb-head-remote)9d\n" % data) + fm.plain(b" common: %(nb-common-heads-remote)9d\n" % data) + fm.plain(b" unknown: %(nb-head-remote-unknown)9d\n" % data) + fm.plain(b"local changesets: %(nb-revs)9d\n" % data) + fm.plain(b" common: %(nb-revs-common)9d\n" % data) + fm.plain(b" heads: %(nb-common-heads)9d\n" % data) + fm.plain(b" roots: %(nb-common-roots)9d\n" % data) + fm.plain(b" missing: %(nb-revs-missing)9d\n" % data) + fm.plain(b" heads: %(nb-missing-heads)9d\n" % data) + fm.plain(b" roots: %(nb-missing-roots)9d\n" % data) + fm.plain(b" first undecided set: %(nb-ini_und)9d\n" % data) + fm.plain(b" heads: %(nb-ini_und-heads)9d\n" % data) + fm.plain(b" roots: %(nb-ini_und-roots)9d\n" % data) + fm.plain(b" common: %(nb-ini_und-common)9d\n" % data) + fm.plain(b" missing: %(nb-ini_und-missing)9d\n" % data) if ui.verbose: - ui.writenoi18n( + fm.plain( b"common heads: %s\n" % b" ".join(sorted(short(n) for n in heads_common)) ) + fm.end() _chunksize = 4 << 10 diff -r 36b4640ccb6a -r 3a8cf5b9c820 tests/test-completion.t --- a/tests/test-completion.t Mon Mar 15 16:37:11 2021 +0100 +++ b/tests/test-completion.t Mon Mar 15 16:55:03 2021 +0100 @@ -283,7 +283,7 @@ debugdate: extended debugdeltachain: changelog, manifest, dir, template debugdirstate: nodates, dates, datesort - debugdiscovery: old, nonheads, rev, seed, local-as-revs, remote-as-revs, ssh, remotecmd, insecure + debugdiscovery: old, nonheads, rev, seed, local-as-revs, remote-as-revs, ssh, remotecmd, insecure, template debugdownload: output debugextensions: template debugfileset: rev, all-files, show-matcher, show-stage diff -r 36b4640ccb6a -r 3a8cf5b9c820 tests/test-setdiscovery.t --- a/tests/test-setdiscovery.t Mon Mar 15 16:37:11 2021 +0100 +++ b/tests/test-setdiscovery.t Mon Mar 15 16:55:03 2021 +0100 @@ -1724,3 +1724,45 @@ common: 300 missing: 100 common heads: 3ee37d65064a + +Test -T json output +------------------- + + $ hg -R a debugdiscovery \ + > -T json \ + > --debug \ + > --local-as-revs 'first(heads(all()), 25)' \ + > --remote-as-revs 'last(heads(all()), 25)' \ + > --config devel.discovery.randomize=false + query 1; heads + searching for changes + taking quick initial sample + query 2; still undecided: 375, sample size is: 81 + sampling from both directions + query 3; still undecided: 3, sample size is: 3 + 3 total queries in *s (glob) + [ + { + "elapsed": *, (glob) + "nb-common-heads": 1, + "nb-common-heads-both": 0, + "nb-common-heads-local": 0, + "nb-common-heads-remote": 0, + "nb-common-roots": 1, + "nb-head-local": 25, + "nb-head-local-missing": 25, + "nb-head-remote": 25, + "nb-head-remote-unknown": 25, + "nb-ini_und": 400, + "nb-ini_und-common": 300, + "nb-ini_und-heads": 25, + "nb-ini_und-missing": 100, + "nb-ini_und-roots": 1, + "nb-missing-heads": 25, + "nb-missing-roots": 25, + "nb-revs": 400, + "nb-revs-common": 300, + "nb-revs-missing": 100, + "total-roundtrips": 3 + } + ]