diff --git a/CLAUDE.md b/CLAUDE.md index 8b4eb64..36b723c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -906,8 +906,22 @@ mitziehen. das neue Jahr erneut aufrufen. Das Jahr außen hält die oberste Ebene kurz, die Abteilungen innen sind dieselben wie die Bereiche der Website (dann ist beim Hochladen klar, wohin das Material gehört). Tiefer wird nichts vorgegeben; Ereignisse bündeln die Hochladenden selbst als `2026-08-15 Sommerfest`. -Weil `uploads/` gitignored ist, muss das Skript **auf dem Server** laufen — Ordner per FTP hochzuladen -erzeugt bei Umlauten Doppelgänger (macOS NFD vs. Linux NFC). +Das Skript läuft **auf dem Server** — Ordner per FTP hochzuladen erzeugt bei Umlauten Doppelgänger +(macOS NFD vs. Linux NFC). + +**`uploads/` ist versioniert** (Beschluss 31.07.2026, vorher gitignored): das Material des Vereins ist +damit gesichert und beim Entwickeln lokal da, und ein frischer Klon ist wirklich vollständig. Der +Ordner ist aber das einzige Verzeichnis im Repo, in das **andere Menschen** schreiben — daraus folgt +die eine Regel, die das Ganze zusammenhält: + +> **Erst auf dem Server committen und pushen, dann lokal pullen, dann entwickeln.** Nie umgekehrt. + +Hält man sie ein, kann kein Deploy hochgeladene Fotos überschreiben (ein `pull` fasst neue Dateien +auf dem Server ohnehin nicht an, aber ein `reset`/`checkout` schon). Zweiter Preis, dauerhaft: **Git +vergisst nichts** — eine gelöschte Datei bleibt in der Historie, das Repo schrumpft nie wieder. +Deshalb Videos sparsam: zwei Sportfest-Clips machten allein 85 der ersten 174 MB, und für die +Website wären sie ohnehin neu zu kodieren. Wird es unbequem, ist der Schnitt `*.mp4` auszunehmen und +Videos separat zu sichern; die Fotos und die `.quelle.txt`-Belege der Chronik sind der wertvolle Teil. **Genau ein Patch in der Fremd-Datei** (`index.php:122`, `$localconfigpath` absolut statt relativ) — ohne ihn startet die App bei abweichendem Arbeitsverzeichnis ohne Login. **Update ausschließlich über