diff --git a/contrib/perf.py b/contrib/perf.py --- a/contrib/perf.py +++ b/contrib/perf.py @@ -2612,3 +2612,21 @@ hint=b"use 3.5 or later") return orig(repo, cmd, file_, opts) extensions.wrapfunction(cmdutil, b'openrevlog', openrevlog) + +@command(b'perfprogress', formatteropts + [ + (b'', b'topic', b'topic', b'topic for progress messages'), + (b'c', b'total', 1000000, b'total value we are progressing to'), +], norepo=True) +def perfprogress(ui, topic=None, total=None, **opts): + """printing of progress bars""" + opts = _byteskwargs(opts) + + timer, fm = gettimer(ui, opts) + + def doprogress(): + with ui.makeprogress(topic, total=total) as progress: + for i in pycompat.xrange(total): + progress.increment() + + timer(doprogress) + fm.end() diff --git a/tests/test-contrib-perf.t b/tests/test-contrib-perf.t --- a/tests/test-contrib-perf.t +++ b/tests/test-contrib-perf.t @@ -112,6 +112,7 @@ perfphases benchmark phasesets computation perfphasesremote benchmark time needed to analyse phases of the remote server + perfprogress printing of progress bars perfrawfiles (no help text available) perfrevlogchunks Benchmark operations on revlog chunks. @@ -188,6 +189,7 @@ $ hg perfmoonwalk $ hg perfnodelookup 2 $ hg perfpathcopies 1 2 + $ hg perfprogress --total 1000 $ hg perfrawfiles 2 $ hg perfrevlogindex -c #if reporevlogstore