Remove the_repository global variable in favor of the repository argument that gets passed in "builtin/upload-server-info.c". The RUN_SETUP macro is used in "git.c" when the 'update-server-info' command is wired to the 'cmd_update_server_info()' function." This means we can be sure that the `run_builtin()` function inside "git.c" will always pass a valid `repo` variable to `cmd_update_server_info()` when the `update-server-info` command is run inside a Git repository. When the command is run outside a Git repository without the `-h` option, the command will fail (`die`) inside the `run_builtin()` function when the `setup_git_directory()` is called. So, the `cmd_update_server_info()` would not be called at all. When `-h` is passed to the command outside a Git repository, the `run_builtin()` will call the `cmd_update_server_info()` function with `repo` set as NULL. It is certain that the `update_server_info()` function would not be called when the `repo` config is `NULL` since this only happens when the `-h` option is used and the command would exit with code 129 before getting to the `update_server_info()` function inside the `usage_with_options()` function. To prevent accessing a `NULL` value `repo`, it is necessary to check if the `repo` has a valid value before calling the `repo_config` option inside "update-server-info.c" since it comes before the `usage_with_options()` function. So, this change is safe and would not lead to any breakage. Mentored-by: Christian Couder <chriscool@xxxxxxxxxxxxx> Signed-off-by: Usman Akinyemi <usmanakinyemi202@xxxxxxxxx> --- builtin/update-server-info.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/builtin/update-server-info.c b/builtin/update-server-info.c index 47a3f0bdd9..d7467290a8 100644 --- a/builtin/update-server-info.c +++ b/builtin/update-server-info.c @@ -1,4 +1,3 @@ -#define USE_THE_REPOSITORY_VARIABLE #include "builtin.h" #include "config.h" #include "gettext.h" @@ -13,7 +12,7 @@ static const char * const update_server_info_usage[] = { int cmd_update_server_info(int argc, const char **argv, const char *prefix, - struct repository *repo UNUSED) + struct repository *repo) { int force = 0; struct option options[] = { @@ -21,11 +20,12 @@ int cmd_update_server_info(int argc, OPT_END() }; - git_config(git_default_config, NULL); + if (repo) + repo_config(repo, git_default_config, NULL); argc = parse_options(argc, argv, prefix, options, update_server_info_usage, 0); if (argc > 0) usage_with_options(update_server_info_usage, options); - return !!update_server_info(the_repository, force); + return !!update_server_info(repo, force); } -- 2.48.1