Re: [PATCH v3 3/3] builtin/add: error out when passing untracked path with -u
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 2, 2024, 21:49 UTC
- Message-ID
- <xmqqh6gj305n.fsf@gitster.g>
- In-Reply-To
- <20240402213640.139682-7-shyamthakkar001@gmail.com>
Ghanshyam Thakkar <shyamthakkar001@gmail.com> writes:
Show 47 quoted lines
> When passing untracked path with -u option, it silently succeeds.
> There is no error message and the exit code is zero. This is
> inconsistent with other instances of git commands where the expected
> argument is a known path. In those other instances, we error out when
> the path is not known.
>
> Fix this by passing a character array to add_files_to_cache() to
> collect the pathspec matching information and report the error and
> exit if a pathspec does not match any cache entry. Also add a testcase
> to cover this scenario.
>
> Signed-off-by: Ghanshyam Thakkar <shyamthakkar001@gmail.com>
> ---
> builtin/add.c | 11 ++++++++++-
> t/t2200-add-update.sh | 10 ++++++++++
> 2 files changed, 20 insertions(+), 1 deletion(-)
>
> diff --git a/builtin/add.c b/builtin/add.c
> index dc4b42d0ad..88261b0f2b 100644
> --- a/builtin/add.c
> +++ b/builtin/add.c
> @@ -370,6 +370,7 @@ int cmd_add(int argc, const char **argv, const char *prefix)
> int add_new_files;
> int require_pathspec;
> char *seen = NULL;
> + char *ps_matched = NULL;
> struct lock_file lock_file = LOCK_INIT;
>
> git_config(add_config, NULL);
> @@ -549,13 +550,20 @@ int cmd_add(int argc, const char **argv, const char *prefix)
>
> begin_odb_transaction();
>
> + ps_matched = xcalloc(pathspec.nr, 1);
> if (add_renormalize)
> exit_status |= renormalize_tracked_files(&pathspec, flags);
> else
> exit_status |= add_files_to_cache(the_repository, prefix,
> - &pathspec, NULL,
> + &pathspec, ps_matched,
> include_sparse, flags);
>
> + if (take_worktree_changes && !add_renormalize &&
> + report_path_error(ps_matched, &pathspec)) {
> + free(ps_matched);
> + exit(1);
> + }Shouldn't we pay attention to ignore_add_errors? The same comments about free'ing and exit code from the review on the previous step apply here, too.
Other than that, looking good.