git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 3/3] trace2: emit 'def_param' set with 'cmd_name' event

From
JGJeff Hostetler via GitGitGadget <gitgitgadget@gmail.com>
Date
Mar 7, 2024, 15:22 UTC
Message-ID
<178721cd4f044af44b9d7e625cabf63c5e19c75d.1709824949.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.1679.v2.git.1709824949.gitgitgadget@gmail.com>
From: Jeff Hostetler <jeffhostetler@github.com>

Some commands do not cause a set of 'def_param' events to be emitted. This includes "git-remote-https", "git-http-fetch", and various "query" commands, like "git --man-path".

Since all of these commands do emit a 'cmd_name' event, add code to the "trace2_cmd_name()" function to generate the set of 'def_param' events.

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                  | 6 ------
 t/t0211-trace2-perf.sh | 6 +++---
 trace2.c               | 3 +++
 3 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/git.c b/git.c
index 7068a184b0a..a769d72ab8f 100644
--- a/git.c
+++ b/git.c
@@ -373,8 +373,6 @@ 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);
@@ -411,8 +409,6 @@ 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;
@@ -462,8 +458,6 @@ 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);
diff --git a/t/t0211-trace2-perf.sh b/t/t0211-trace2-perf.sh
index 7b353195396..13ef69b92f8 100755
--- a/t/t0211-trace2-perf.sh
+++ b/t/t0211-trace2-perf.sh
@@ -320,7 +320,7 @@ test_expect_success 'expect def_params for normal builtin command' '
 # Representative query command dispatched in handle_options()
 # in git.c
 #
-test_expect_failure 'expect def_params for query command' '
+test_expect_success 'expect def_params for query command' '
 	try_simple "git --man-path" "_query_"
 '
 
@@ -337,7 +337,7 @@ test_expect_failure 'expect def_params for query command' '
 # remote-curl.c rather than git.c.  Confirm that we get def_param
 # events from both layers.
 #
-test_expect_failure 'expect def_params for remote-curl and _run_dashed_' '
+test_expect_success 'expect def_params for remote-curl and _run_dashed_' '
 	test_when_finished "rm prop.perf actual" &&
 
 	test_config_global "trace2.configParams" "cfg.prop.*" &&
@@ -366,7 +366,7 @@ test_expect_failure 'expect def_params for remote-curl and _run_dashed_' '
 # an executable built from http-fetch.c.  Confirm that we get
 # def_param events from both layers.
 #
-test_expect_failure 'expect def_params for http-fetch and _run_dashed_' '
+test_expect_success 'expect def_params for http-fetch and _run_dashed_' '
 	test_when_finished "rm prop.perf actual" &&
 
 	test_config_global "trace2.configParams" "cfg.prop.*" &&
diff --git a/trace2.c b/trace2.c
index facce641ef3..f894532d053 100644
--- a/trace2.c
+++ b/trace2.c
@@ -433,6 +433,9 @@ void trace2_cmd_name_fl(const char *file, int line, const char *name)
 	for_each_wanted_builtin (j, tgt_j)
 		if (tgt_j->pfn_command_name_fl)
 			tgt_j->pfn_command_name_fl(file, line, name, hierarchy);
+
+	trace2_cmd_list_config();
+	trace2_cmd_list_env_vars();
 }
 
 void trace2_cmd_mode_fl(const char *file, int line, const char *mode)
-- 
gitgitgadget
Previous: Jeff Hostetler via GitGitGadget
Message 13 of 13 in “trace2: move 'def_param' events into 'cmd_name' and 'cmd_alias'”
  1. 0/4 trace2: move 'def_param' events into 'cmd_name' and 'cmd_alias'Jeff Hostetler via GitGitGadget, Mar 4, 2024
  2. 1/4 t0211: demonstrate missing 'def_param' events for certain commandsJeff Hostetler via GitGitGadget, Mar 4, 2024
  3. 2/4 trace2: avoid emitting 'def_param' set more than onceJeff Hostetler via GitGitGadget, Mar 4, 2024
  4. 3/4 trace2: emit 'def_param' set with 'cmd_name' eventJeff Hostetler via GitGitGadget, Mar 4, 2024
  5. 4/4 trace2: remove unneeded calls to generate 'def_param' setJeff Hostetler via GitGitGadget, Mar 4, 2024
  6. Josh SteadmonMar 6, 2024
  7. Junio C HamanoMar 6, 2024
  8. Jeff HostetlerMar 6, 2024
  9. Junio C HamanoMar 6, 2024
  10. 0/3 trace2: move generation of 'def_param' events into code for 'cmd_name'Jeff Hostetler via GitGitGadget, Mar 7, 2024
  11. 2/3 trace2: avoid emitting 'def_param' set more than onceJeff Hostetler via GitGitGadget, Mar 7, 2024
  12. 1/3 t0211: demonstrate missing 'def_param' events for certain commandsJeff Hostetler via GitGitGadget, Mar 7, 2024
  13. 3/3 trace2: emit 'def_param' set with 'cmd_name' eventJeff Hostetler via GitGitGadget, Mar 7, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.