From 5db948d4136b2aa84b33815c939447ff0eabd76a Mon Sep 17 00:00:00 2001 From: John Cai Date: Thu, 10 Oct 2024 21:13:46 +0000 Subject: git: pass in repo to builtin based on setup_git_directory_gently The current code in run_builtin() passes in a repository to the builtin based on whether cmd_struct's option flag has RUN_SETUP. This is incorrect, however, since some builtins that only have RUN_SETUP_GENTLY can potentially take a repository. setup_git_directory_gently() tells us whether or not a command is being run inside of a repository. Use the output of setup_git_directory_gently() to help determine whether or not there is a repository to pass to the builtin. If not, then we just pass NULL. As part of this patch, we need to modify add to check for a NULL repo before calling repo_git_config(), since add -h can be run outside of a repository. Signed-off-by: John Cai Signed-off-by: Junio C Hamano --- builtin/add.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'builtin/add.c') diff --git a/builtin/add.c b/builtin/add.c index 773b7224a4..7d35307792 100644 --- a/builtin/add.c +++ b/builtin/add.c @@ -385,7 +385,8 @@ int cmd_add(int argc, char *ps_matched = NULL; struct lock_file lock_file = LOCK_INIT; - repo_config(repo, add_config, NULL); + if (repo) + repo_config(repo, add_config, NULL); argc = parse_options(argc, argv, prefix, builtin_add_options, builtin_add_usage, PARSE_OPT_KEEP_ARGV0); -- cgit v1.2.3