Subject: [GSOC PATCH v2 0/2] builtin/fmt-merge-msg: remove dependency on global variables and 'the_repository'

From: Ayush Chandekar <[email-masked]>
Date: Mon, 11 Aug 2025 05:15:44 +0530

The aim of this patch series is to remove the definition '#define USE_THE_REPOSITORY_VARIABLE'
from "builtin/fmt-merge-msg.c" by removing global variable 'merge_log_config' and the global 
'the_repository'

This patch series contains two patches:

1 - Remove the global varaible 'merge_log_config' and localize it in
    'cmd_fmt_merge_msg()' and 'cmd_merge()'. Set its value by passing it in
    'fmt_merge_msg_config()' by passing its pointer to the function via the
    callback parameter.

2 - Remove the dependency of 'the_repository' in "builtin/fmt-merge-msg.c", allowing the removal
    of the definition '#define USE_THE_REPOSITORY_VARIABLE'. Also add a test to make sure that
    "git fmt-merge-msg -h" can be called with repository being NULL.

Thanks to Junio and Phillip for reviewing my patch series and Christian for mentoring me!

Ayush Chandekar (2):
  environment: remove the global variable 'merge_log_config'
  builtin/fmt-merge-msg: stop depending on 'the_repository'

 builtin/fmt-merge-msg.c |  6 +++---
 builtin/merge.c         |  3 ++-
 environment.c           |  1 -
 fmt-merge-msg.c         | 10 ++++++----
 fmt-merge-msg.h         |  1 -
 t/t1517-outside-repo.sh |  7 +++++++
 6 files changed, 18 insertions(+), 10 deletions(-)

Range-diff against v1:
1:  c82620a1f5 < -:  ---------- environment: remove the global variable 'merge_log_config'
-:  ---------- > 1:  3aa014ed46 environment: remove the global variable 'merge_log_config'
2:  04d6f682a6 ! 2:  8e55516cda builtin/fmt-merge-msg: stop depending on 'the_repository'
    @@ Commit message
         builtin/fmt-merge-msg: stop depending on 'the_repository'
     
         Refactor builtin/fmt-merge-msg.c to remove the dependancy on the global
    -    'the_repository'. Replace all the occurrences of 'the_repository' with
    -    'repo', where 'repo' is a pointer to 'struct repository' passed to the
    -    function 'cmd_fmt_merge_msg()' and thus remove the definition '#define
    -    USE_THE_REPOSITORY_VARIABLE'. Also, add a test to make sure that "git
    -    fmt-merge-msg -h" can be called outside a repository.
    +    'the_repository'. Remove the 'UNUSED' macro from the 'struct repository'
    +    parameter and replace 'git_config()' with 'repo_config()' so that
    +    configuration is read from the passed repository. Also, add a test to
    +    make sure that "git fmt-merge-msg -h" can be called outside a
    +    repository.
     
         Mentored-by: Christian Couder <[email-masked]>
         Mentored-by: Ghanshyam Thakkar <[email-masked]>
    @@ builtin/fmt-merge-msg.c: int cmd_fmt_merge_msg(int argc,
      	int ret;
      	struct fmt_merge_msg_opts opts;
      
    --	git_config(fmt_merge_msg_config, NULL);
    +-	git_config(fmt_merge_msg_config, &merge_log_config);
    ++	repo_config(repo, fmt_merge_msg_config, &merge_log_config);
      	argc = parse_options(argc, argv, prefix, options, fmt_merge_msg_usage,
      			     0);
      	if (argc > 0)
    - 		usage_with_options(fmt_merge_msg_usage, options);
    -+	repo_config(repo, fmt_merge_msg_config, NULL);
    - 
    --	adjust_shortlog_len(the_repository, &shortlog_len);
    -+	adjust_shortlog_len(repo, &shortlog_len);
    - 
    - 	if (inpath && strcmp(inpath, "-")) {
    - 		in = fopen(inpath, "r");
     
      ## t/t1517-outside-repo.sh ##
     @@ t/t1517-outside-repo.sh: test_expect_success 'prune does not crash with -h' '

-- 
2.49.0