"Diogo Castro via GitGitGadget" [off-list ref] writes:
From: Diogo Castro <redacted>
`git ls-files` calls `common_prefix()` / `get_common_prefix_len()` which
calculate the length of the common prefix of all *positive* pathspecs,
`max_prefix_len`.
...
Solution: in `do_match_pathspec()`, only strip the prefix when handling
positive pathspecs, not when handling negative pathspecs.
Hmph, if the command line were
git ls-files -- a/b/c a/b/d !a/b/
shouldn't we strip a/b/ from all three? Would it make sense to
leave the negative one relative to the full tree? I am wondering
if the solution is to compute common prefix across both positive and
negative ones instead.