v0.1.0 - 2026-07-11
- Added
Gitignore.Wildmatch.match?/3. - Added parsing and matching for gitignore rules.
- Added nested ignore-file stacks.
- Added optional
.gitignoreloader. - Added fixture-backed tests for wildmatch and ignore semantics.
- Verified the wildmatch engine against all 756 cases extracted from git's
t3070-wildmatch.sh (git v2.48.1) via
scripts/extract_t3070.exs, rewriting the engine as a byte-oriented matcher with git's abort semantics along the way. Matching is now byte-based:?matches one byte, malformed character classes fail the whole match, anddir/**no longer matchesdiritself. - Verified ignore-file semantics against
git check-ignorewith 79 oracle-generated fixture cases (scripts/gen_ignore_cases.exs), fixing three divergences: basename rules now exclude everything under a matched nested directory (node_modulesignoresapps/node_modules/foo.js), parent exclusion applies to any matched directory rather than only dir-only rules (/fooignoresfoo/bar), and parent exclusion now spans nested ignore-file layers. Rules in a directory's own.gitignoreno longer apply to that directory itself.