mirror of
https://github.com/stablyai/orca.git
synced 2026-10-03 08:02:12 +00:00
Git for Windows defaults to core.autocrlf=true, so a stock Windows clone rewrote the working tree on checkout. That is not cosmetic: Orca ships executable shell scripts straight out of this repo, and a \r on the shebang line stops them running — `resources/linux/bin/orca-ide` dies with `env: bash\r: No such file or directory` (exit 127) instead of executing. The same reaches `resources/darwin/bin/orca`, the deb/rpm maintainer scripts and .husky/pre-commit. 122 of the 130 tracked shebang files had no protection. Replace the nine ad-hoc eol=lf pins with one repo-wide `* text=auto eol=lf`. `text=auto` leaves the binary decision to Git and the index was already LF-only, so this changes zero index blobs: `git add --renormalize .` across all 20,050 tracked files stages nothing. Add config/scripts/check-line-ending-policy.mjs to `pnpm lint`. For every tracked file the OS has to exec (leading `#!` or the executable bit) it asserts the committed blob has no CRLF and that `git check-attr eol` resolves to `lf` — two independent failure modes, neither implying the other. The population is derived from content rather than hand-listed, because a curated list would have had to name 122 files today and would silently miss the 123rd. Whether resources/win32/bin/orca.cmd should be pinned to CRLF is left undecided; it changes a shipped byte. .gitattributes carries the one-line follow-up as a comment. Refs STA-4307