On Wed, Jun 19, 2019 at 8:03 PM Derrick Stolee <stolee@xxxxxxxxx> wrote: > > - show_files(the_repository, &dir); > > - > > - if (show_resolve_undo) > > - show_ru_info(the_repository->index); > > + if (!show_json) { > > + show_files(the_repository, &dir); > > + > > + if (show_resolve_undo) > > + show_ru_info(the_repository->index); > > + } else { > > + struct json_writer jw = JSON_WRITER_INIT; > > + > > + discard_index(the_repository->index); > > + the_repository->index->jw = &jw; > > + if (repo_read_index(the_repository) < 0) > > + die("index file corrupt"); > > + puts(jw.json.buf); > > + the_repository->index->jw = NULL; > > + jw_release(&jw); > > + } > > > > if (ps_matched) { > > int bad; > > I see this 'ps_matched' condition at the end, which is related to > the '--error-unmatch' option. I added "--error-unmatch foo" to my > command and got the appropriate error message: > > error: pathspec 'foo' did not match any file(s) known to git > Did you forget to 'git add'? > > This was sent to stderr while the JSON was in stdout, so this should > be appropriate to allow both options. Just pointing it out to make > sure this is intended. --error-unmatch only makes sense when you specify pathspec (like "foo") but that does not work well with --json at all because we don't do filtering (how do we even filter in extensions?). I'll just make sure that "ls-files --json <pathspec>" is rejected. That'll cover --error-unmatch. -- Duy