git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Jeff Hostetler via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Josh Steadmon <steadmon@google.com>,
	Jeff Hostetler <git@jeffhostetler.com>,
	Jeff Hostetler <jeffhostetler@github.com>
Subject: [PATCH v2 0/3] trace2: move generation of 'def_param' events into code for 'cmd_name'
Date: Thu, 07 Mar 2024 15:22:26 +0000	[thread overview]
Message-ID: <pull.1679.v2.git.1709824949.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1679.git.1709566808.gitgitgadget@gmail.com>

Here is version 2 of this series. The only change from V1 is to combine the
last two commits as discussed.

Thanks Jeff

----------------------------------------------------------------------------

Some Git commands do not emit def_param events for interesting config and
environment variable settings. Let's fix that.

Builtin commands compiled into git.c have the normal control flow and emit a
cmd_name event and then def_param events for each interesting config and
environment variable. However, some special "query" commands, like
--exec-path, or some forms of alias expansion, emitted a cmd_name but did
not emit def_param events.

Also, special commands git-remote-https is built from remote-curl.c and
git-http-fetch is built from http-fetch.c and do not use the normal set up
in git.c. These emitted a cmd_name but not def_param events.

To minimize the footprint of this commit, move the calls to
trace2_cmd_list_config() and trace2_cmd_list_env_vars() into
trace2_cmd_name() so that we always get a set of def_param events when a
cmd_name event is generated.

Users can define local config settings on a repo to classify/name a repo
(e.g. "project-foo" vs "personal") and use the def_param feature to label
Trace2 data so that (a third-party) telemetry service does not collect data
on personal repos or so that telemetry from one work repo is distinguishable
from another work repo in database queries.

Jeff Hostetler (3):
  t0211: demonstrate missing 'def_param' events for certain commands
  trace2: avoid emitting 'def_param' set more than once
  trace2: emit 'def_param' set with 'cmd_name' event

 git.c                  |   6 --
 t/t0211-trace2-perf.sh | 231 +++++++++++++++++++++++++++++++++++++++++
 trace2.c               |  15 +++
 3 files changed, 246 insertions(+), 6 deletions(-)


base-commit: 0f9d4d28b7e6021b7e6db192b7bf47bd3a0d0d1d
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1679%2Fjeffhostetler%2Falways-emit-def-param-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1679/jeffhostetler/always-emit-def-param-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1679

Range-diff vs v1:

 1:  b378b93242a = 1:  b378b93242a t0211: demonstrate missing 'def_param' events for certain commands
 2:  65068e97597 = 2:  65068e97597 trace2: avoid emitting 'def_param' set more than once
 3:  9507184b4f1 ! 3:  178721cd4f0 trace2: emit 'def_param' set with 'cmd_name' event
     @@ Commit message
          the "trace2_cmd_name()" function to generate the set of 'def_param'
          events.
      
     -    We can later remove explicit calls to "trace2_cmd_list_config()" and
     -    "trace2_cmd_list_env_vars()" in git.c.
     +    Remove explicit calls to "trace2_cmd_list_config()" and
     +    "trace2_cmd_list_env_vars()" in git.c since they are no longer needed.
      
     +    Reviewed-by: Josh Steadmon <steadmon@google.com>
          Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
      
     + ## git.c ##
     +@@ git.c: static int handle_alias(int *argcp, const char ***argv)
     + 			strvec_pushv(&child.args, (*argv) + 1);
     + 
     + 			trace2_cmd_alias(alias_command, child.args.v);
     +-			trace2_cmd_list_config();
     +-			trace2_cmd_list_env_vars();
     + 			trace2_cmd_name("_run_shell_alias_");
     + 
     + 			ret = run_command(&child);
     +@@ git.c: static int handle_alias(int *argcp, const char ***argv)
     + 		COPY_ARRAY(new_argv + count, *argv + 1, *argcp);
     + 
     + 		trace2_cmd_alias(alias_command, new_argv);
     +-		trace2_cmd_list_config();
     +-		trace2_cmd_list_env_vars();
     + 
     + 		*argv = new_argv;
     + 		*argcp += count - 1;
     +@@ git.c: static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
     + 
     + 	trace_argv_printf(argv, "trace: built-in: git");
     + 	trace2_cmd_name(p->cmd);
     +-	trace2_cmd_list_config();
     +-	trace2_cmd_list_env_vars();
     + 
     + 	validate_cache_entries(the_repository->index);
     + 	status = p->fn(argc, argv, prefix);
     +
       ## t/t0211-trace2-perf.sh ##
      @@ t/t0211-trace2-perf.sh: test_expect_success 'expect def_params for normal builtin command' '
       # Representative query command dispatched in handle_options()
 4:  e8528715ebf < -:  ----------- trace2: remove unneeded calls to generate 'def_param' set

-- 
gitgitgadget


  parent reply	other threads:[~2024-03-07 15:25 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-04 15:40 [PATCH 0/4] trace2: move 'def_param' events into 'cmd_name' and 'cmd_alias' Jeff Hostetler via GitGitGadget
2024-03-04 15:40 ` [PATCH 1/4] t0211: demonstrate missing 'def_param' events for certain commands Jeff Hostetler via GitGitGadget
2024-03-04 15:40 ` [PATCH 2/4] trace2: avoid emitting 'def_param' set more than once Jeff Hostetler via GitGitGadget
2024-03-04 15:40 ` [PATCH 3/4] trace2: emit 'def_param' set with 'cmd_name' event Jeff Hostetler via GitGitGadget
2024-03-04 15:40 ` [PATCH 4/4] trace2: remove unneeded calls to generate 'def_param' set Jeff Hostetler via GitGitGadget
2024-03-06 21:47   ` Josh Steadmon
2024-03-06 21:57     ` Junio C Hamano
2024-03-06 22:54       ` Jeff Hostetler
2024-03-06 23:00         ` Junio C Hamano
2024-03-07 15:22 ` Jeff Hostetler via GitGitGadget [this message]
2024-03-07 15:22   ` [PATCH v2 1/3] t0211: demonstrate missing 'def_param' events for certain commands Jeff Hostetler via GitGitGadget
2024-03-07 15:22   ` [PATCH v2 2/3] trace2: avoid emitting 'def_param' set more than once Jeff Hostetler via GitGitGadget
2024-03-07 15:22   ` [PATCH v2 3/3] trace2: emit 'def_param' set with 'cmd_name' event Jeff Hostetler via GitGitGadget

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.1679.v2.git.1709824949.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@jeffhostetler.com \
    --cc=git@vger.kernel.org \
    --cc=jeffhostetler@github.com \
    --cc=steadmon@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).