Browse Source

ls-files --error-unmatch: do not barf if the same pattern is given twice.

This is most visible when you do "git commit Makefile Makefile"; it
may be a stupid request, but that is not a reason to fail the command.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Junio C Hamano 17 years ago
parent
commit
93e23fea2d
  1. 20
      builtin-ls-files.c

20
builtin-ls-files.c

@ -511,8 +511,28 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix) @@ -511,8 +511,28 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix)
*/
int num, errors = 0;
for (num = 0; pathspec[num]; num++) {
int other, found_dup;

if (ps_matched[num])
continue;
/*
* The caller might have fed identical pathspec
* twice. Do not barf on such a mistake.
*/
for (found_dup = other = 0;
!found_dup && pathspec[other];
other++) {
if (other == num || !ps_matched[other])
continue;
if (!strcmp(pathspec[other], pathspec[num]))
/*
* Ok, we have a match already.
*/
found_dup = 1;
}
if (found_dup)
continue;

error("pathspec '%s' did not match any file(s) known to git.",
pathspec[num] + prefix_offset);
errors++;

Loading…
Cancel
Save