Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Optional enhancement: Consider prepending a
* text=autorule before the*.shline. It's the standard first line in.gitattributes— it tells git to auto-detect text files and normalize their line endings on commit. Combined with the explicit*.sh text eol=lfoverride, this gives blanket protection to all text files (YAML, R, Quarto, etc.) while still guaranteeing LF in working-tree shell scripts.Not blocking — the current rule already solves the stated problem. The only downside to
text=autois it may trigger renormalization of other tracked files on first checkout for contributors; rungit add --renormalize .locally to see if anything would change before merging.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adopted, with one tweak: used
* text=auto eol=lfrather than bare* text=auto, so LF is actually forced in the working tree on checkout (baretext=autoleaves native EOL, i.e. CRLF on Windows) — this matches the repo owner's global gitattributes. Verified zero renormalization churn:git grep -lI $'\r' origin/mainreturns nothing andgit add --renormalize .stages only.gitattributes. Worth noting this repo's working tree already has 19 CRLF files including 6 Python/R scripts whose shebangs would break the same way the.shdid, so the blanket rule is the better fix here.