|
|
|
@ -346,15 +346,16 @@ void overlay_tree_on_cache(const char *tree_name, const char *prefix)
@@ -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. |
|
|
|
|
*/ |
|
|
|
|
struct strbuf sb = STRBUF_INIT; |
|
|
|
|
const char *name; |
|
|
|
|
int num, errors = 0; |
|
|
|
|
for (num = 0; pathspec[num]; num++) { |
|
|
|
|
for (num = 0; num < pathspec->nr; num++) { |
|
|
|
|
int other, found_dup; |
|
|
|
|
|
|
|
|
|
if (ps_matched[num]) |
|
|
|
@ -362,13 +363,16 @@ int report_path_error(const char *ps_matched, const char **pathspec, const char
@@ -362,13 +363,16 @@ int report_path_error(const char *ps_matched, const char **pathspec, const char
|
|
|
|
|
/* |
|
|
|
|
* The caller might have fed identical pathspec |
|
|
|
|
* twice. Do not barf on such a mistake. |
|
|
|
|
* FIXME: parse_pathspec should have eliminated |
|
|
|
|
* duplicate pathspec. |
|
|
|
|
*/ |
|
|
|
|
for (found_dup = other = 0; |
|
|
|
|
!found_dup && pathspec[other]; |
|
|
|
|
!found_dup && other < pathspec->nr; |
|
|
|
|
other++) { |
|
|
|
|
if (other == num || !ps_matched[other]) |
|
|
|
|
continue; |
|
|
|
|
if (!strcmp(pathspec[other], pathspec[num])) |
|
|
|
|
if (!strcmp(pathspec->items[other].original, |
|
|
|
|
pathspec->items[num].original)) |
|
|
|
|
/* |
|
|
|
|
* Ok, we have a match already. |
|
|
|
|
*/ |
|
|
|
@ -377,9 +381,8 @@ int report_path_error(const char *ps_matched, const char **pathspec, const char
@@ -377,9 +381,8 @@ int report_path_error(const char *ps_matched, const char **pathspec, const char
|
|
|
|
|
if (found_dup) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
name = quote_path_relative(pathspec[num], -1, &sb, prefix); |
|
|
|
|
error("pathspec '%s' did not match any file(s) known to git.", |
|
|
|
|
name); |
|
|
|
|
pathspec->items[num].original); |
|
|
|
|
errors++; |
|
|
|
|
} |
|
|
|
|
strbuf_release(&sb); |
|
|
|
@ -575,7 +578,7 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
@@ -575,7 +578,7 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
|
|
|
|
|
|
|
|
|
|
if (ps_matched) { |
|
|
|
|
int bad; |
|
|
|
|
bad = report_path_error(ps_matched, pathspec.raw, prefix); |
|
|
|
|
bad = report_path_error(ps_matched, &pathspec, prefix); |
|
|
|
|
if (bad) |
|
|
|
|
fprintf(stderr, "Did you forget to 'git add'?\n"); |
|
|
|
|
|
|
|
|
|