convert report_path_error to take struct pathspec
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
18e4f40599
commit
17ddc66e70
@ -304,7 +304,7 @@ static int checkout_paths(const struct checkout_opts *opts,
|
|||||||
ce->ce_flags |= CE_MATCHED;
|
ce->ce_flags |= CE_MATCHED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (report_path_error(ps_matched, opts->pathspec.raw, opts->prefix)) {
|
if (report_path_error(ps_matched, &opts->pathspec, opts->prefix)) {
|
||||||
free(ps_matched);
|
free(ps_matched);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -188,20 +188,18 @@ static int commit_index_files(void)
|
|||||||
* and return the paths that match the given pattern in list.
|
* and return the paths that match the given pattern in list.
|
||||||
*/
|
*/
|
||||||
static int list_paths(struct string_list *list, const char *with_tree,
|
static int list_paths(struct string_list *list, const char *with_tree,
|
||||||
const char *prefix, const char **pattern)
|
const char *prefix, const struct pathspec *pattern)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char *m;
|
char *m;
|
||||||
|
|
||||||
if (!pattern)
|
if (!pattern->nr)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (i = 0; pattern[i]; i++)
|
m = xcalloc(1, pattern->nr);
|
||||||
;
|
|
||||||
m = xcalloc(1, i);
|
|
||||||
|
|
||||||
if (with_tree) {
|
if (with_tree) {
|
||||||
char *max_prefix = common_prefix(pattern);
|
char *max_prefix = common_prefix(pattern->raw);
|
||||||
overlay_tree_on_cache(with_tree, max_prefix ? max_prefix : prefix);
|
overlay_tree_on_cache(with_tree, max_prefix ? max_prefix : prefix);
|
||||||
free(max_prefix);
|
free(max_prefix);
|
||||||
}
|
}
|
||||||
@ -212,7 +210,7 @@ static int list_paths(struct string_list *list, const char *with_tree,
|
|||||||
|
|
||||||
if (ce->ce_flags & CE_UPDATE)
|
if (ce->ce_flags & CE_UPDATE)
|
||||||
continue;
|
continue;
|
||||||
if (!match_pathspec(pattern, ce->name, ce_namelen(ce), 0, m))
|
if (!match_pathspec_depth(pattern, ce->name, ce_namelen(ce), 0, m))
|
||||||
continue;
|
continue;
|
||||||
item = string_list_insert(list, ce->name);
|
item = string_list_insert(list, ce->name);
|
||||||
if (ce_skip_worktree(ce))
|
if (ce_skip_worktree(ce))
|
||||||
@ -402,7 +400,7 @@ static char *prepare_index(int argc, const char **argv, const char *prefix,
|
|||||||
|
|
||||||
memset(&partial, 0, sizeof(partial));
|
memset(&partial, 0, sizeof(partial));
|
||||||
partial.strdup_strings = 1;
|
partial.strdup_strings = 1;
|
||||||
if (list_paths(&partial, !current_head ? NULL : "HEAD", prefix, pathspec.raw))
|
if (list_paths(&partial, !current_head ? NULL : "HEAD", prefix, &pathspec))
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
||||||
discard_cache();
|
discard_cache();
|
||||||
|
@ -346,15 +346,16 @@ void overlay_tree_on_cache(const char *tree_name, const char *prefix)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int report_path_error(const char *ps_matched, const char **pathspec, const char *prefix)
|
int report_path_error(const char *ps_matched,
|
||||||
|
const struct pathspec *pathspec,
|
||||||
|
const char *prefix)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Make sure all pathspec matched; otherwise it is an error.
|
* Make sure all pathspec matched; otherwise it is an error.
|
||||||
*/
|
*/
|
||||||
struct strbuf sb = STRBUF_INIT;
|
struct strbuf sb = STRBUF_INIT;
|
||||||
const char *name;
|
|
||||||
int num, errors = 0;
|
int num, errors = 0;
|
||||||
for (num = 0; pathspec[num]; num++) {
|
for (num = 0; num < pathspec->nr; num++) {
|
||||||
int other, found_dup;
|
int other, found_dup;
|
||||||
|
|
||||||
if (ps_matched[num])
|
if (ps_matched[num])
|
||||||
@ -362,13 +363,16 @@ int report_path_error(const char *ps_matched, const char **pathspec, const char
|
|||||||
/*
|
/*
|
||||||
* The caller might have fed identical pathspec
|
* The caller might have fed identical pathspec
|
||||||
* twice. Do not barf on such a mistake.
|
* twice. Do not barf on such a mistake.
|
||||||
|
* FIXME: parse_pathspec should have eliminated
|
||||||
|
* duplicate pathspec.
|
||||||
*/
|
*/
|
||||||
for (found_dup = other = 0;
|
for (found_dup = other = 0;
|
||||||
!found_dup && pathspec[other];
|
!found_dup && other < pathspec->nr;
|
||||||
other++) {
|
other++) {
|
||||||
if (other == num || !ps_matched[other])
|
if (other == num || !ps_matched[other])
|
||||||
continue;
|
continue;
|
||||||
if (!strcmp(pathspec[other], pathspec[num]))
|
if (!strcmp(pathspec->items[other].original,
|
||||||
|
pathspec->items[num].original))
|
||||||
/*
|
/*
|
||||||
* Ok, we have a match already.
|
* Ok, we have a match already.
|
||||||
*/
|
*/
|
||||||
@ -377,9 +381,8 @@ int report_path_error(const char *ps_matched, const char **pathspec, const char
|
|||||||
if (found_dup)
|
if (found_dup)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
name = quote_path_relative(pathspec[num], -1, &sb, prefix);
|
|
||||||
error("pathspec '%s' did not match any file(s) known to git.",
|
error("pathspec '%s' did not match any file(s) known to git.",
|
||||||
name);
|
pathspec->items[num].original);
|
||||||
errors++;
|
errors++;
|
||||||
}
|
}
|
||||||
strbuf_release(&sb);
|
strbuf_release(&sb);
|
||||||
@ -575,7 +578,7 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
|
|||||||
|
|
||||||
if (ps_matched) {
|
if (ps_matched) {
|
||||||
int bad;
|
int bad;
|
||||||
bad = report_path_error(ps_matched, pathspec.raw, prefix);
|
bad = report_path_error(ps_matched, &pathspec, prefix);
|
||||||
if (bad)
|
if (bad)
|
||||||
fprintf(stderr, "Did you forget to 'git add'?\n");
|
fprintf(stderr, "Did you forget to 'git add'?\n");
|
||||||
|
|
||||||
|
2
cache.h
2
cache.h
@ -1312,7 +1312,7 @@ extern int ws_blank_line(const char *line, int len, unsigned ws_rule);
|
|||||||
#define ws_tab_width(rule) ((rule) & WS_TAB_WIDTH_MASK)
|
#define ws_tab_width(rule) ((rule) & WS_TAB_WIDTH_MASK)
|
||||||
|
|
||||||
/* ls-files */
|
/* ls-files */
|
||||||
int report_path_error(const char *ps_matched, const char **pathspec, const char *prefix);
|
int report_path_error(const char *ps_matched, const struct pathspec *pathspec, const char *prefix);
|
||||||
void overlay_tree_on_cache(const char *tree_name, const char *prefix);
|
void overlay_tree_on_cache(const char *tree_name, const char *prefix);
|
||||||
|
|
||||||
char *alias_lookup(const char *alias);
|
char *alias_lookup(const char *alias);
|
||||||
|
Loading…
Reference in New Issue
Block a user