feat(files): MAX_VERSIONS_KEPT statt zweier Konstanten

Die Zahl stand doppelt im Quelltext: als const im Backend und noch einmal
im Verlaufs-Dialog, verbunden nur durch den Kommentar "muss zu
maxVersionsKept im Backend passen". Ein Satz ist keine Zusicherung - beim
ersten Aendern haette der Dialog eine andere Zahl genannt als die, die der
Server anwendet.

Jetzt eine .env-Variable (Vorgabe 5), die der Server ueber
/api/v1/public/config mitliefert. Werte unter 1 werden verworfen: Die Zahl
geht als OFFSET in die Aufraeumabfrage, und OFFSET 0 loeschte jede Fassung -
aus "keine Grenze" wuerde "kein Verlauf".

Gemessen: MAX_VERSIONS_KEPT=3, Datei siebenmal ueberschrieben, uebrig
bleiben v6, v5, v4 bei aktueller v7.

Dazu ein README-Abschnitt "Versionen" - Standard aus, warum das so ist,
Kontingent, und dass jedes Strg+S in Office eine Fassung anlegt. Bisher
stand zu alldem nichts im README.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Opus 5 committed 2026-08-24 12:58:12 +02:00
1 parent 7fc8bb51d5
commit ebff565367
10 files changed
+119 -14

No files matched your search

+20 -1
View File
@@ -33,7 +33,26 @@ const maxUploadSize = 5 << 30 // 5 GB
// maxVersionsKept begrenzt den Verlauf einer Datei mit aktivierter
// Versionierung. Ältere Fassungen werden samt Blob entfernt.
const maxVersionsKept = 5
//
// Eine Paketvariable, kein Feld an Handler: Der Wert wird beim Start einmal
// aus MAX_VERSIONS_KEPT gesetzt und danach nur gelesen. Ihn stattdessen
// durchzureichen hieße, vier Signaturen zu ändern – auch die von
// ReplaceContent, die der Office-Weg benutzt –, für eine Zahl, die sich zur
// Laufzeit nie ändert.
var maxVersionsKept = 5
// SetMaxVersionsKept wird einmal beim Start aufgerufen, bevor der erste
// Request läuft.
//
// Kleiner als 1 wird verworfen: Die Zahl geht als OFFSET in das DELETE der
// Aufräumabfrage, und `OFFSET 0` löschte **jede** Fassung – aus „keine Grenze"
// würde „kein Verlauf". Wer keinen Verlauf will, lässt die Versionierung an
// der Datei aus; dafür gibt es den Schalter schon.
func SetMaxVersionsKept(n int) {
if n >= 1 {
maxVersionsKept = n
}
}
type Handler struct {
store *Store