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
--- 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
--- 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
--- 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
+ }
+ ]