| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- # Line-ending policy — pinned so a Windows clone with core.autocrlf=true cannot
- # corrupt scripts on checkout.
- #
- # WHY THIS EXISTS: bash treats a trailing CR as part of the token. A CRLF
- # `set -euo pipefail` parses as `pipefail\r` => "invalid option name", and a CRLF
- # shebang makes `env` search for a program literally named `bash\r` => "No such
- # file or directory". Diagnosed 2026-08-07: 136 of 157 tracked *.sh files were
- # CRLF on disk while every git blob was clean LF, which broke
- # skills/fleet-ops/scripts/fleet.sh outright and therefore the whole landing gate.
- #
- # The corruption grew on every `git checkout` — files written by an agent's
- # Write/Edit tool are LF, files materialised by git were not. Nothing in the
- # repo's own history was ever wrong; only the working tree.
- #
- # DEBUGGING NOTE: MSYS `sed` silently strips CR on read and will tell you a file
- # is clean when it is not. Use binary-safe checks:
- # tr -cd '\r' < file | wc -c # non-zero => CRLF on disk
- # head -1 file | cat -A # shows ^M before $
- #
- # Default: normalise to LF in the repo AND in the working tree, on every platform.
- * text=auto eol=lf
- # Executed by bash — MUST be LF on disk everywhere, including Windows.
- *.sh text eol=lf
- # Executed by PowerShell. Windows PowerShell 5.1 prefers CRLF, and CRLF is
- # harmless to pwsh 7, so these are pinned the other way deliberately. Unrelated
- # to the separate WinPS 5.1 encoding issue (non-ASCII in string literals needs a
- # UTF-8 BOM or ASCII) — that is an encoding problem, not a line-ending one.
- *.ps1 text eol=crlf
- *.psm1 text eol=crlf
- *.psd1 text eol=crlf
- *.bat text eol=crlf
- *.cmd text eol=crlf
- # Belt and braces: never let git guess on these.
- *.png binary
- *.jpg binary
- *.jpeg binary
- *.gif binary
- *.ico binary
- *.woff binary
- *.woff2 binary
- *.pdf binary
- *.zip binary
|