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 .gitignore loader.
  • 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, and dir/** no longer matches dir itself.
  • Verified ignore-file semantics against git check-ignore with 79 oracle-generated fixture cases (scripts/gen_ignore_cases.exs), fixing three divergences: basename rules now exclude everything under a matched nested directory (node_modules ignores apps/node_modules/foo.js), parent exclusion applies to any matched directory rather than only dir-only rules (/foo ignores foo/bar), and parent exclusion now spans nested ignore-file layers. Rules in a directory's own .gitignore no longer apply to that directory itself.