Farbschema: Hell
Sie befinden sich hier: start » de » Dokumentation » DokuWiki-Erweiterungen (WvdS) » ADO-Git » Herkunft der Sichtbarkeitsstufen bei der Mount-Registrierung

Herkunft der Sichtbarkeitsstufen bei der Mount-Registrierung

Status

Angenommen. Ersetzt den vorherigen Zustand, in dem die Registrierungsschicht eine eigene Liste der Sichtbarkeitsstufen führte.

Kontext

Die Sichtbarkeitsstufen sind an genau einer Stelle definiert: in der Tabelle, die aus einer Sichtbarkeitsstufe die ACL-Zeilen macht (Domain/MountAclWriter). Die Registrierungsschicht (Domain/RepoMountRegistry) prüfte die übergebene Sichtbarkeitsstufe jedoch gegen eine zweite, eigene Liste aus drei Literalen und ersetzte jeden unbekannten Wert durch das restriktivste private. Solange es drei Sichtbarkeitsstufen gab, stimmten die beiden Listen überein.

Mit der vierten Sichtbarkeitsstufe team liefen sie auseinander. Der Assistent bot team an, die ACL wurde nach den Regeln von team geschrieben – und die Registrierung legte still private ab. Ergebnis: der Mount-Datensatz und conf/acl.auth.php beschrieben verschiedene Sichtbarkeitsstufen, ausgerechnet auf dem Bildschirm, dessen Spalte Regeln genau diese Übereinstimmung sichtbar machen soll.

Derselbe Bruch wiederholte sich später zwei Ebenen tiefer, und zwar doppelt. Die Speicherschicht führt in Model/AdoGitMount eine eigene Liste der Sichtbarkeitsstufen, die Sichtbarkeitsmarke im Repository-Browser in Ui/BrowseView eine weitere. Keine der beiden wurde mitgezogen, als showcase und library hinzukamen, und beide ersetzen eine unbekannte Sichtbarkeitsstufe stillschweigend durch private, statt sie zu melden. Nach dem Umstufen von 53 Namensräumen las die Speicherschicht damit jeden von ihnen als private, während conf/acl.auth.php korrekt library vergab – und wer auf dem Mount-Bildschirm irgendetwas gespeichert hätte, hätte private zurückgeschrieben und öffentlich lesbaren Quelltext geschlossen, ohne eine Sichtbarkeitsstufe angefasst zu haben.

Mechanismus

Die Registrierung fragt das Vokabular jetzt bei der Tabelle ab, die die Regeln schreibt, statt eine Kopie davon zu führen:

if (!MountAclWriter::isValidTier($tier)) {
    $tier = 'private';
}

Das Klemmen auf private bleibt: eine Sichtbarkeitsstufe, die diese Installation nicht kennt, darf nie mehr gewähren als die restriktivste. Verändert hat sich allein die Quelle von „bekannt“.

Ein Regressionstest iteriert über MountAclWriter::tiers() und prüft, dass jede darin genannte Sichtbarkeitsstufe unverändert bis in die Speicherung durchreicht. Eine weitere Sichtbarkeitsstufe, die dort ergänzt und hier vergessen würde, lässt den Test fehlschlagen, statt still zu verschwinden.

Konsequenzen

  • In der Registrierung nie wieder eine eigene Liste der Sichtbarkeitsstufen anlegen – auch nicht „nur zur Sicherheit“. Zwei Listen desselben Vokabulars driften auseinander, und der Bruch ist still.
  • Der Regressionstest darf nicht auf feste Namen von Sichtbarkeitsstufen umgeschrieben werden. Sein Wert liegt darin, dass er die Tabelle fragt und nicht ihre Kopie.
  • Ein Rückfall auf den restriktivsten Wert ist richtig, ein stiller Rückfall nicht. Alle drei Kopien ersetzten eine unbekannte Sichtbarkeitsstufe ohne Meldung. Der Rückfall schützt, das Schweigen versteckt: im Betrieb ist ein still ersetzter Wert von einem korrekt gelesenen nicht zu unterscheiden.
  • Das Vokabular steht an vier Stellen, und drei davon sind Kopien. Quelle ist die Tabelle, die die Regeln schreibt. Schema-Bedingung, Speichermodell und Sichtbarkeitsmarke fragen sie oder werden gegen sie geprüft – ein Test vergleicht Schema und Modell in beide Richtungen, weil eine einseitige Prüfung die jeweils andere Lücke offen ließe.
  • Vor dieser Änderung registrierte team-Mounts sind noch falsch abgelegt. Sie stehen als private in der Liste, während ihre Regeln zu team passen. Die Korrektur ist einmalig: im Zeilenmenü team wählen und Speichern. Bestandsdaten wandern nicht von selbst mit, weil nichts sicher unterscheiden kann, ob private damals gewollt oder erzwungen war.
  • Eine neue Sichtbarkeitsstufe braucht nur einen Eintrag in MountAclWriter::TIERS. Assistent, Zeilenmenü, der Reiter „Was die Sichtbarkeitsstufen bewirken“ und die Registrierung lesen von dort.

Verwandte Themen

de/wiki/dwe/wkdoadogit/note-tier-vocabulary.txt · Zuletzt geändert: von claude2664