Files
easy-ocpp/.gitattributes
T
ManuelandClaude Opus 5 b180b471bb Migrations-Prüfsummen: Zeilenenden fixieren (v0.3.1)
Bestehende Installationen brachen beim Start mit dem Windows-Release-Binary
ab: "migration 1 was previously applied but has been modified" – obwohl die
Migration inhaltlich seit v0.2.0 unverändert ist.

Ursache: .gitattributes enthielt nur "* text=auto". Zusammen mit
core.autocrlf=true (Standard auf windows-latest-Runnern) checkt
actions/checkout die .sql-Dateien als CRLF aus. sqlx::migrate! bettet den
Dateiinhalt zur Compile-Zeit ein und bildet darüber eine SHA-384-Summe, die
beim Start gegen _sqlx_migrations geprüft wird:

  0001_initial.sql mit LF   -> 0651a39f...
  0001_initial.sql mit CRLF -> 90093a9a...

Die GitHub-Windows-Builds v0.2.0 und v0.3.0 tragen die CRLF-Variante, lokal
gebaute Exes und der Linux-Build die LF-Variante. Datenbanken, die mit einem
LF-Binary angelegt wurden, kollidieren daher mit dem Windows-Release-ZIP.

Zwei Änderungen:

1. .gitattributes erzwingt "*.sql text eol=lf". Ab jetzt erzeugen Windows-
   und Linux-Runner identische Prüfsummen.

2. db::repair_line_ending_checksums() hebt eine gespeicherte Prüfsumme vor
   dem Migrationslauf an – aber nur, wenn sie exakt der Zeilenenden-Variante
   desselben SQL entspricht, in beide Richtungen. Ohne diesen Schritt würde
   Punkt 1 jede Installation brechen, die mit dem CRLF-Binary aus dem
   GitHub-ZIP von v0.2.0/v0.3.0 angelegt wurde. Echte inhaltliche
   Abweichungen führen weiterhin zum Abbruch durch sqlx.

sha2 wird dafür direkte Dependency (war bereits transitiv gelockt, die
Auflösung ändert sich nicht).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 09:51:50 +02:00

9 lines
415 B
Plaintext

* text=auto
# Migrationen MÜSSEN LF behalten: sqlx::migrate! bildet eine SHA-384-Prüfsumme
# über den Dateiinhalt und vergleicht sie mit der in _sqlx_migrations
# gespeicherten. Ein CRLF-Checkout (Windows-Buildrunner) erzeugt sonst eine
# andere Prüfsumme als ein LF-Checkout (Linux) -> "migration 1 was previously
# applied but has been modified" beim Start gegen eine bestehende Datenbank.
*.sql text eol=lf