Subject: Re: [RFC PATCH 2/7] add: include magic part of pathspec on --refresh error

From: Junio C Hamano <[email-masked]>
Date: Wed, 17 Feb 2021 14:20:22 -0800

Matheus Tavares <[email-masked]> writes:

> When `git add --refresh <pathspec>` doesn't find any matches for the
> given pathspec, it prints an error message using the `match` field of
> the `struct pathspec_item`. However, this field doesn't contain the
> magic part of the pathspec. Instead, let's use the `original` field.

I assume that this is what already happens when there is no
"--refresh" on the command line?  I.e.

    $ cd t
    $ git add ':(icase)foo'
    fatal: pathspec ':(icase)foo' did not match any files
    $ git add --refresh ':(icase)foo'
    fatal: pathspec 't/foo' did not match any files

and you are unifying the discrepancy between the two to match the
former.

Makes sense.

>
> Signed-off-by: Matheus Tavares <[email-masked]>
> ---
>  builtin/add.c  | 2 +-
>  t/t3700-add.sh | 6 ++++++
>  2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/builtin/add.c b/builtin/add.c
> index f757de45ea..8c96c23778 100644
> --- a/builtin/add.c
> +++ b/builtin/add.c
> @@ -180,7 +180,7 @@ static void refresh(int verbose, const struct pathspec *pathspec)
>  	for (i = 0; i < pathspec->nr; i++) {
>  		if (!seen[i])
>  			die(_("pathspec '%s' did not match any files"),
> -			    pathspec->items[i].match);
> +			    pathspec->items[i].original);
>  	}
>  	free(seen);
>  }
> diff --git a/t/t3700-add.sh b/t/t3700-add.sh
> index fc81f2ef00..fe72204066 100755
> --- a/t/t3700-add.sh
> +++ b/t/t3700-add.sh
> @@ -196,6 +196,12 @@ test_expect_success 'git add --refresh with pathspec' '
>  	grep baz actual
>  '
>  
> +test_expect_success 'git add --refresh correctly reports no match error' "
> +	echo \"fatal: pathspec ':(icase)nonexistent' did not match any files\" >expect &&
> +	test_must_fail git add --refresh ':(icase)nonexistent' 2>actual &&
> +	test_i18ncmp expect actual
> +"
> +
>  test_expect_success POSIXPERM,SANITY 'git add should fail atomically upon an unreadable file' '
>  	git reset --hard &&
>  	date >foo1 &&