git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Ayush Chandekar <ayu.chandekar@gmail.com>
Cc: git@vger.kernel.org,  christian.couder@gmail.com,
	shyamthakkar001@gmail.com
Subject: Re: [GSOC PATCH 2/2] builtin/fmt-merge-msg: stop depending on 'the_repository'
Date: Tue, 29 Jul 2025 09:41:10 -0700	[thread overview]
Message-ID: <xmqqjz3rospl.fsf@gitster.g> (raw)
In-Reply-To: <04d6f682a6b2257e14682e809a2fd01ccfcf0d08.1753804956.git.ayu.chandekar@gmail.com> (Ayush Chandekar's message of "Tue, 29 Jul 2025 21:49:35 +0530")

Ayush Chandekar <ayu.chandekar@gmail.com> writes:

> 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.

This also moves the call to git_config()/repo_config() after
parse_options().

It generally is a bad idea to read command line options first and
then read the configuration (it is a bug if such a flow causes
values from configuration to overwrite values from command line).
THe current set of options and configuration variables may not
overlap, in which case such a questionable arrangement happen to be
without bug right now, but it would prevent future developers from
adding new options and configuration variables and make them
interact with each other in the most natural way.

In any case, the reason for this change of the order between config
and parse-options is not explained at all in the proposed log
message.

> Mentored-by: Christian Couder <christian.couder@gmail.com>
> Mentored-by: Ghanshyam Thakkar <shyamthakkar001@gmail.com>
> Signed-off-by: Ayush Chandekar <ayu.chandekar@gmail.com>
> ---
>  builtin/fmt-merge-msg.c | 7 +++----
>  t/t1517-outside-repo.sh | 7 +++++++
>  2 files changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c
> index fed8163825..848498b8e6 100644
> --- a/builtin/fmt-merge-msg.c
> +++ b/builtin/fmt-merge-msg.c
> @@ -1,4 +1,3 @@
> -#define USE_THE_REPOSITORY_VARIABLE
>  #include "builtin.h"
>  #include "config.h"
>  #include "fmt-merge-msg.h"
> @@ -13,7 +12,7 @@ static const char * const fmt_merge_msg_usage[] = {
>  int cmd_fmt_merge_msg(int argc,
>  		      const char **argv,
>  		      const char *prefix,
> -		      struct repository *repo UNUSED)
> +		      struct repository *repo)
>  {
>  	char *inpath = NULL;
>  	const char *message = NULL;
> @@ -53,13 +52,13 @@ int cmd_fmt_merge_msg(int argc,
>  	int ret;
>  	struct fmt_merge_msg_opts opts;
>  
> -	git_config(fmt_merge_msg_config, NULL);
>  	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");
> diff --git a/t/t1517-outside-repo.sh b/t/t1517-outside-repo.sh
> index 8f59b867f2..4b4e645860 100755
> --- a/t/t1517-outside-repo.sh
> +++ b/t/t1517-outside-repo.sh
> @@ -121,4 +121,11 @@ test_expect_success 'prune does not crash with -h' '
>  	test_grep "[Uu]sage: git prune " usage
>  '
>  
> +test_expect_success 'fmt-merge-msg does not crash with -h' '
> +	test_expect_code 129 git fmt-merge-msg -h >usage &&
> +	test_grep "[Uu]sage: git fmt-merge-msg " usage &&
> +	test_expect_code 129 nongit git fmt-merge-msg -h >usage &&
> +	test_grep "[Uu]sage: git fmt-merge-msg " usage
> +'
> +
>  test_done

  reply	other threads:[~2025-07-29 16:41 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-29 16:19 [GSOC PATCH 0/2] builtin/fmt-merge-msg: remove dependency on global variables and 'the_repository' Ayush Chandekar
2025-07-29 16:19 ` [GSOC PATCH 1/2] environment: remove the global variable 'merge_log_config' Ayush Chandekar
2025-07-29 16:48   ` Junio C Hamano
2025-07-29 17:30     ` Ayush Chandekar
2025-07-29 17:53       ` Junio C Hamano
2025-07-29 19:07   ` Phillip Wood
2025-07-29 21:16     ` Ayush Chandekar
2025-07-30  8:53       ` Phillip Wood
2025-07-29 16:19 ` [GSOC PATCH 2/2] builtin/fmt-merge-msg: stop depending on 'the_repository' Ayush Chandekar
2025-07-29 16:41   ` Junio C Hamano [this message]
2025-07-29 21:49     ` Ayush Chandekar
2025-07-29 22:41       ` Junio C Hamano
2025-08-10 15:33 ` [GSOC PATCH 0/2] builtin/fmt-merge-msg: remove dependency on global variables and 'the_repository' Ayush Chandekar
2025-08-10 23:45 ` [GSOC PATCH v2 " Ayush Chandekar
2025-08-10 23:45   ` [GSOC PATCH v2 1/2] environment: remove the global variable 'merge_log_config' Ayush Chandekar
2025-08-11 14:42     ` Phillip Wood
2025-08-11 16:13       ` Junio C Hamano
2025-08-11 18:25         ` Ayush Chandekar
2025-08-10 23:45   ` [GSOC PATCH v2 2/2] builtin/fmt-merge-msg: stop depending on 'the_repository' Ayush Chandekar

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

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

  git send-email \
    --in-reply-to=xmqqjz3rospl.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=ayu.chandekar@gmail.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=shyamthakkar001@gmail.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.
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 NNTP newsgroup(s).