# HG changeset patch # User Boris Feld <boris.f...@octobus.net> # Date 1529432311 -3600 # Tue Jun 19 19:18:31 2018 +0100 # Node ID 53221514bc635fc3b8687db48de3e948b075e84c # Parent d283976aa9a2b35631c749facc0290dd9ea11c30 # EXP-Topic earlydebug # Available At https://bitbucket.org/octobus/mercurial-devel/ # hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 53221514bc63 debug: process --debug flag earlier
This allow the verbosity level to be set correctly during extension initialization. diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -811,6 +811,13 @@ def _dispatch(req): if req.repo: uis.add(req.repo.ui) + if (req.earlyoptions['verbose'] or req.earlyoptions['debug'] + or req.earlyoptions['quiet']): + for opt in ('verbose', 'debug', 'quiet'): + val = pycompat.bytestr(bool(req.earlyoptions[opt])) + for ui_ in uis: + ui_.setconfig('ui', opt, val, '--' + opt) + if req.earlyoptions['profile']: for ui_ in uis: ui_.setconfig('profiling', 'enabled', 'true', '--profile') @@ -876,8 +883,11 @@ def _dispatch(req): if options["profile"]: profiler.start() + # if abbreviated version of this were used, take them in account, now if options['verbose'] or options['debug'] or options['quiet']: for opt in ('verbose', 'debug', 'quiet'): + if options[opt] == req.earlyoptions[opt]: + continue val = pycompat.bytestr(bool(options[opt])) for ui_ in uis: ui_.setconfig('ui', opt, val, '--' + opt) diff --git a/tests/test-extension.t b/tests/test-extension.t --- a/tests/test-extension.t +++ b/tests/test-extension.t @@ -9,7 +9,9 @@ Test basic extension support > configitem = registrar.configitem(configtable) > configitem(b'tests', b'foo', default=b"Foo") > def uisetup(ui): + > ui.debug(b"uisetup called [debug]\\n") > ui.write(b"uisetup called\\n") + > ui.status(b"uisetup called [status]\\n") > ui.flush() > def reposetup(ui, repo): > ui.write(b"reposetup called for %s\\n" % os.path.basename(repo.root)) @@ -40,15 +42,29 @@ Test basic extension support $ echo "foobar = $abspath" >> $HGRCPATH $ hg foo uisetup called + uisetup called [status] reposetup called for a ui == repo.ui reposetup called for a (chg !) ui == repo.ui (chg !) Foo + $ hg foo --quiet + uisetup called (no-chg !) + reposetup called for a (chg !) + ui == repo.ui + Foo + $ hg foo --debug + uisetup called [debug] (no-chg !) + uisetup called (no-chg !) + uisetup called [status] (no-chg !) + reposetup called for a (chg !) + ui == repo.ui + Foo $ cd .. $ hg clone a b uisetup called (no-chg !) + uisetup called [status] (no-chg !) reposetup called for a ui == repo.ui reposetup called for b @@ -58,6 +74,7 @@ Test basic extension support $ hg bar uisetup called (no-chg !) + uisetup called [status] (no-chg !) Bar $ echo 'foobar = !' >> $HGRCPATH @@ -67,6 +84,7 @@ module/__init__.py-style $ cd a $ hg foo uisetup called + uisetup called [status] reposetup called for a ui == repo.ui reposetup called for a (chg !) _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel