[PATCH 3 of 3 v2] dispatch: make hg --profile wrap reposetup

Yuya Nishihara yuya at tcha.org
Wed Sep 21 10:34:19 EDT 2016


On Tue, 20 Sep 2016 18:30:49 +0000, Arun Kulshreshtha wrote:
> On 9/20/16, 6:01 AM, "Yuya Nishihara" <youjah at gmail.com on behalf of yuya at tcha.org> wrote:
> 
>     On Mon, 19 Sep 2016 16:13:58 -0700, Arun Kulshreshtha wrote:
>     > # HG changeset patch
>     > # User Arun Kulshreshtha <kulshrax at fb.com>
>     > # Date 1474318006 25200
>     > #      Mon Sep 19 13:46:46 2016 -0700
>     > # Node ID 20af15cac045b249aece42cb71b671302b6c314c
>     > # Parent  6f33cc84cdd6c9ab38d32784505b6fb53bf3eba9
>     > dispatch: make hg --profile wrap reposetup
>     > 
>     > Add profiling to _dispatch so that reposetup is included in the profiler
>     > output. All existing usage of the profiling context manager has been preserved,
>     > so the existing behavior of profiling enabled after reposetup will not be
>     > affected.
>     > 
>     > diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py
>     > --- a/mercurial/dispatch.py
>     > +++ b/mercurial/dispatch.py
>     > @@ -844,7 +844,7 @@
>     >      elif not cmd:
>     >          return commands.help_(ui, 'shortlist')
>     >  
>     > -    if True:
>     > +    with profiling.maybeprofile(ui):
>     >          repo = None
>     >          cmdpats = args[:]
>     >          if not _cmdattr(ui, cmd, func, 'norepo'):
>     
>     Any reason to not remove maybeprofile() from _runcommand() ? Can it be enabled
>     after reposetup() ?
> 
> Yes, if it is configured in the repo-specific settings (.hg/hgrc), for example, then it would be missed if
> maybeprofile were removed from _runcommand().

.hg/hgrc should be loaded to 'lui'. Can you check if maybeprofile(lui) works?

> Additionally, we’d need to wrap other callsites of
> _runcommand(), such as _checkshellalias(), to maintain the existing behavior.

Good point. Given that we want to start profiling as early as possible, I think
it's better to test profiling.enabled before extensions.loadall(lui), and test
it again after parsing command options.


More information about the Mercurial-devel mailing list