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>
This commit is contained in:
parent
9656153b87
commit
93e23fea2d
@ -511,8 +511,28 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix)
|
|||||||
*/
|
*/
|
||||||
int num, errors = 0;
|
int num, errors = 0;
|
||||||
for (num = 0; pathspec[num]; num++) {
|
for (num = 0; pathspec[num]; num++) {
|
||||||
|
int other, found_dup;
|
||||||
|
|
||||||
if (ps_matched[num])
|
if (ps_matched[num])
|
||||||
continue;
|
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.",
|
error("pathspec '%s' did not match any file(s) known to git.",
|
||||||
pathspec[num] + prefix_offset);
|
pathspec[num] + prefix_offset);
|
||||||
errors++;
|
errors++;
|
||||||
|
Loading…
Reference in New Issue
Block a user