ToolJovia
Developer

Git Attributes Resolution Workbench

Trace selected Git attribute states across supplied virtual .gitattributes files, including source precedence and the built-in binary macro.

✓ Browser-local processing

Loading tool…

How to use Git Attributes Resolution Workbench

Trace selected Git attribute states across supplied virtual .gitattributes files, including source precedence and the built-in binary macro. Use case-sensitive UTF-8 byte matching for target file paths. See set, unset, unspecified and string values with exact matching-line witnesses, while keeping filters and checkout behavior inert.

  1. Provide virtual attribute sources and target paths as json.
  2. Choose the supported mode and run the tool. Review its assumptions and any reported errors.
  3. Copy the result or download a separate output; reset to clear the current form.

Good to know

  • Input is one explicit JSON bundle of 1–16 {directory,source} virtual files and 1–25 unique target file paths. Source JSON is capped at 200 KB and combined decoded configuration contents at 100 KB. Paths use canonical relative POSIX spelling, at most 1,024 UTF-8 bytes and 32 components; no absolute paths, backslashes, controls, dot or empty segments. No actual file is discovered or opened.
  • At most 2,000 total physical source lines, 500 pattern sections/lines, 5,000 supplied pairs/attribute tokens, 20,000 compiled glob tokens and 4,096 tokens per glob. Each query batch is refused before matching if its static dynamic-programming cost exceeds 2,000,000 cells. No pattern is compiled into a JavaScript regular expression.
  • Configuration source uses LF/CRLF, no BOM/bare CR/prohibited controls, at most 8,192 characters per line. Matched source witnesses and property values are intentional output, so remove sensitive custom metadata before copying a report.
  • A dedicated module Worker prepares the selected core before ready, with a 10-second preparation limit and a separate 2-second computation deadline. The result is a separate bounded JSON report; no editor, Git command, index, working-tree file, environment or server is accessed.
  • A root file uses directory=""; child sources use their relative directory. The optional infoAttributes string has higher precedence than supplied tree files. Later lines and closer directories override per attribute; omitted global/system files and index fallback are not inferred.
  • Supported pattern tokens are literals/escapes, *, ?, complete ** path components and bounded ASCII character classes/ranges/negation. Literal UTF-8 filenames are supported, but matching is byte-oriented: ? consumes one byte. C-quoted patterns accept selected Git escapes and exact three-digit octal UTF-8 bytes; resulting controls/invalid UTF-8 are refused. Directory patterns do not recursively cover child files.
  • Negative patterns, custom/redefined [attr] macros, nested/POSIX/slash-containing classes, reserved builtin_ attribute names and prefixed -attr=value/!attr=value coercions are refused. Up to 64 attribute tokens per line and 128 characters per nonreserved ASCII name. Values remain literal tokens; only a set binary macro expands to -diff -merge -text, using reverse-priority source selection.
  • This resolves supplied attribute states, not runtime effects. It does not detect binary content, run a filter/diff/merge driver, infer core.autocrlf, apply text/eol compatibility rules, normalize encodings or modify a checkout. No Git-native compatibility certification is claimed.
  • The formatted report is limited to 500,000 characters. Reduce the source when that output budget is exceeded.
  • Inputs are processed on this device and are not automatically saved or uploaded.

Common questions

Why does an unset binary attribute remove the earlier macro expansion?

The model selects the highest-priority value for each attribute before accepting a lower source value. An earlier binary macro that is shadowed by a later -binary or !binary is not expanded. Explicit higher-priority text, diff or merge values also retain their own precedence.

Does this change my original input?

No. The tool returns a separate result. Review that output before using it in another application.

Keep going with related tools

All developer →