All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Simon Gerber via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Simon Gerber <gesimu@gmail.com>
Subject: Re: [PATCH v2] help.c: fix autocorrect in work tree for bare repository
Date: Tue, 13 Dec 2022 10:37:52 +0900	[thread overview]
Message-ID: <xmqqa63sqe1b.fsf@gitster.g> (raw)
In-Reply-To: <pull.1373.v2.git.git.1667073374852.gitgitgadget@gmail.com> (Simon Gerber via GitGitGadget's message of "Sat, 29 Oct 2022 19:56:14 +0000")

"Simon Gerber via GitGitGadget" <gitgitgadget@gmail.com> writes:

> Calling `git_default_config()` in this callback to `read_early_config()`
> seems like a bad idea since those calls will initialize a bunch of state
> in `environment.c` (among other things `is_bare_repository_cfg`) before
> we've properly detected that we're running in a work tree.
>
> All other callbacks provided to `read_early_config()` appear to only
> extract their configurations while simply returning `0` for all other
> config keys.

Very good observation and justification for this change.

>  help.c                      | 2 +-
>  t/t9003-help-autocorrect.sh | 6 ++++++
>  2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/help.c b/help.c
> index d04542d8261..ae534ff0bae 100644
> --- a/help.c
> +++ b/help.c
> @@ -563,7 +563,7 @@ static int git_unknown_cmd_config(const char *var, const char *value, void *cb)
>  	if (skip_prefix(var, "alias.", &p))
>  		add_cmdname(&aliases, p, strlen(p));
>  
> -	return git_default_config(var, value, cb);
> +	return 0;
>  }

And this is exactly what the proposed log message promises to do.

>  static int levenshtein_compare(const void *p1, const void *p2)
> diff --git a/t/t9003-help-autocorrect.sh b/t/t9003-help-autocorrect.sh
> index f00deaf3815..f5b6b4f746b 100755
> --- a/t/t9003-help-autocorrect.sh
> +++ b/t/t9003-help-autocorrect.sh
> @@ -60,4 +60,10 @@ test_expect_success 'autocorrect can be declined altogether' '
>  	test_line_count = 1 actual
>  '
>  
> +test_expect_success 'autocorrect works in work tree created from bare repo' '
> +	git clone --bare . bare.git &&
> +	git -C bare.git worktree add ../worktree &&
> +	git -C worktree -c help.autocorrect=immediate stauts

The reason why this third line is a sufficient test is...?

If "status" is invoked successfully, it would not exit with non-zero
status as long as it correctly notices that it was invoked in a
worktree (as opposed to the current code without your fix, which
would say "nah, where you are running there is no worktree", that is
incorrect), but one scenario I am a bit worried about is what if the
tester has an entry on $PATH that has "git-static" or whatever that
is similar enough to "status", to cause autocorrect work differently
from the case where "git status" would be the only plausible case.

But then we can tell such a tester "don't do that, then" ;-)

Let's queue the patch as-is and see what others think.

Thanks.

> +'
> +
>  test_done


  parent reply	other threads:[~2022-12-13  1:38 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-28 15:24 [PATCH 0/2] Fix autocorrect in work tree for bare repository Simon Gerber via GitGitGadget
2022-10-28 15:24 ` [PATCH 1/2] tests: add test case for autocorrect in work tree for bare clone Simon Gerber via GitGitGadget
2022-10-28 19:28   ` Junio C Hamano
2022-10-29  8:07     ` Simon Gerber
2022-10-28 15:24 ` [PATCH 2/2] help.c: don't call git_default_config in git_unknown_cmd_config Simon Gerber via GitGitGadget
2022-10-29 19:56 ` [PATCH v2] help.c: fix autocorrect in work tree for bare repository Simon Gerber via GitGitGadget
2022-12-12 16:38   ` Simon Gerber
2022-12-13  1:37   ` Junio C Hamano [this message]
2022-12-13  9:48     ` Simon Gerber

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=xmqqa63sqe1b.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=gesimu@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.