Merge branch 'gt/add-u-commit-i-pathspec-check'
"git add -u <pathspec>" and "git commit [-i] <pathspec>" did not diagnose a pathspec element that did not match any files in certain situations, unlike "git add <pathspec>" did. * gt/add-u-commit-i-pathspec-check: builtin/add: error out when passing untracked path with -u builtin/commit: error out when passing untracked path with -i revision: optionally record matches with pathspec elements
This commit is contained in:
@@ -368,6 +368,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);
|
||||
@@ -545,12 +546,17 @@ 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, include_sparse,
|
||||
flags);
|
||||
&pathspec, ps_matched,
|
||||
include_sparse, flags);
|
||||
|
||||
if (take_worktree_changes && !add_renormalize && !ignore_add_errors &&
|
||||
report_path_error(ps_matched, &pathspec))
|
||||
exit(128);
|
||||
|
||||
if (add_new_files)
|
||||
exit_status |= add_files(&dir, flags);
|
||||
@@ -564,6 +570,7 @@ finish:
|
||||
COMMIT_LOCK | SKIP_IF_UNCHANGED))
|
||||
die(_("unable to write new index file"));
|
||||
|
||||
free(ps_matched);
|
||||
dir_clear(&dir);
|
||||
clear_pathspec(&pathspec);
|
||||
return exit_status;
|
||||
|
||||
Reference in New Issue
Block a user