# ============================================================================
#  .gitattributes -- Zeilenenden verbindlich festlegen
#
#  WARUM DAS HIER WICHTIG IST (nicht Kosmetik):
#  cmd.exe verarbeitet .bat-Dateien zeilenweise beim Ausfuehren. Eine .bat mit
#  reinen LF-Enden kann bei Labels/goto stillschweigend falsch springen --
#  start-proxy.bat nutzt genau das (:loop / goto loop). Wuerde diese Datei ohne
#  Regel auf einem anderen System mit LF ausgecheckt, liefe der Supervisor-Loop
#  nicht mehr. Deshalb: Repo speichert LF, Checkout erzwingt ueberall CRLF.
#
#  Ohne diese Datei entscheidet core.autocrlf des jeweiligen Clients -- der ist
#  hier global gar nicht gesetzt, waere also auf jedem PC anders.
# ============================================================================

# Default: Git normalisiert intern auf LF, checkt aber immer CRLF aus.
* text=auto eol=crlf

# Windows-Skripte -- explizit, weil ein falsches Zeilenende sie funktional bricht
*.bat  text eol=crlf
*.cmd  text eol=crlf
*.ps1  text eol=crlf
*.psm1 text eol=crlf
*.vbs  text eol=crlf

# Plattformunabhaengige Quellen
*.py   text eol=crlf
*.md   text eol=crlf
*.json text eol=crlf
*.yaml text eol=crlf
*.yml  text eol=crlf
*.txt  text eol=crlf

# Git-Hooks: MUESSEN LF behalten.
# Git for Windows fuehrt sie mit sh aus; bei CRLF wird aus 'git diff --cached'
# ein 'git diff --cached<CR>' -> der Befehl schlaegt fehl, das Skript laeuft aber
# mit Exit 0 weiter. Der Schutz waere damit nach jedem Klon lautlos deaktiviert,
# ohne dass irgendwo ein Fehler erscheint. Empirisch nachgestellt am 04.09.2026.
# Vorlagen fuer Dateien ausserhalb des Repos: LF behalten.
# Goose schreibt %APPDATA%\Block\goose\config\config.yaml und .goosehints mit
# LF. Wuerden die Vorlagen als CRLF ausgecheckt, entstuenden beim Empfaenger
# Dateien, die sich vom Referenzstand unterscheiden -- funktional folgenlos
# (YAML vertraegt CRLF), aber "exakt gleich" heisst exakt.
config/*.template text eol=lf
config/goose-config.template.yaml text eol=lf

scripts/git-hooks/** text eol=lf

# Binaerdateien: nie anfassen (greift nur, falls doch mal eine getrackt wird)
*.gguf   binary
*.dll    binary
*.exe    binary
*.msi    binary
*.zip    binary
*.png    binary
*.jpg    binary
*.ico    binary
*.pdf    binary

# Diff-Verhalten: grosse generierte Logs nie als Text diffen
*.log    -diff
