Jeff King [off-list ref] writes:
[1] ... But we could do better in git, too. fnmatch
patterns need to be examined linearly because of wildcards. But
many patterns don't have wildcards, or the wildcards come much later
in the pattern. There's no reason we couldn't preprocess the
patterns into a data structure with fast lookup properties, grouped
by non-wildcard prefixes (so seeing "foo/bar/*.baz", we could build
a trie that lets us reject "other/directory" after only a
single-character match).
It sounds like a good project for somebody who has three months working on
full-time, especially if she can be helped with a good mentor. The result
will reasonably be self-contained.