Skip to content

chore: pin perseus.py and shell scripts to LF via .gitattributes - #687

Merged
tcconnally merged 1 commit into
mainfrom
chore/eol-lf-perseus
Jul 6, 2026
Merged

chore: pin perseus.py and shell scripts to LF via .gitattributes#687
tcconnally merged 1 commit into
mainfrom
chore/eol-lf-perseus

Conversation

@tcconnally

Copy link
Copy Markdown
Collaborator

What

Adds .gitattributes pinning perseus.py (and *.sh) to LF line endings.

Why

perseus.py is run directly via its #!/usr/bin/env python3 shebang. On a Windows checkout with core.autocrlf=true, the working copy becomes CRLF; if such a copy is used as a build context, the Linux kernel reads the shebang as python3\r and the container entrypoint fails with:

env: 'python3\r': No such file or directory

This surfaced while validating the Iron Bank container build locally. The committed blob is already LF (git ls-files --eol perseus.pyi/lf), so Linux CI is currently fine — but that safety depends on every contributor's autocrlf setting. This pins the guarantee at the repo level.

Churn

None. git add --renormalize . stages nothing beyond .gitattributes — all tracked files are already LF in the index. This only formalizes and enforces the policy.

🤖 Generated with Claude Code

perseus.py runs directly via its `#!/usr/bin/env python3` shebang. When checked
out with CRLF (Windows core.autocrlf=true), the Linux kernel reads the shebang as
`python3\r` and the entrypoint fails in container/Iron Bank builds. Pin LF so the
guarantee no longer depends on each contributor's git config.

No file-content churn: perseus.py is already stored LF in the index; this only
formalizes and enforces it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@tcconnally
tcconnally merged commit 42fbfc1 into main Jul 6, 2026
7 checks passed
@tcconnally
tcconnally deleted the chore/eol-lf-perseus branch July 6, 2026 17:30
tcconnally added a commit that referenced this pull request Aug 30, 2026
perseus.py runs directly via its `#!/usr/bin/env python3` shebang. When checked
out with CRLF (Windows core.autocrlf=true), the Linux kernel reads the shebang as
`python3\r` and the entrypoint fails in container/Iron Bank builds. Pin LF so the
guarantee no longer depends on each contributor's git config.

No file-content churn: perseus.py is already stored LF in the index; this only
formalizes and enforces it.

Co-authored-by: tcconnally <hermes@perseus.observer>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant