Guidedog Handbuch 0.2.0
Sprache
Auf dieser Seite
Guidedog / Dokumentation 0.2.0

Eine vollständige Generation veröffentlichen

Leser dürfen keine halb aktualisierte Website sehen. Das ist eine Eigenschaft der Veröffentlichung, getrennt von Parsing und Rendering.

Die Invariante

\(P\) sei der veröffentlichte Ausgabebaum. Während der Vorbereitung bleibt er unverändert. Der nächste Baum \(Q\) ist vor dem Commit-Beschluss vollständig. Das Journal nennt Ausgabe und zugehörige Aufzeichnungen.

Die Vorbereitung kann fehlschlagen. Der Host verwirft die unvollständige Generation. Ein beschlossener Commit kann unterbrochen werden. Der nächste Build beendet oder stellt ihn anhand des Journals wieder her. Er rät nicht anhand eines Staging-Verzeichnisnamens.

Vorbereiten und flushen, Journal speichern, Ausgabe wechseln, Aufzeichnungen ersetzen, Journal entfernen.
Abb. 6 Das dauerhafte Journal trennt die Vorbereitung vom beschlossenen Commit.

Warum der Cache außerhalb der Ausgabe liegt

Ein Verzeichnistausch verschiebt seinen gesamten Inhalt. Ein darin liegendes Journal würde während der beschriebenen Operation mitwandern und gerade bei der Wiederherstellung keinen stabilen Ort haben. Guidedog hält Aufzeichnungen außerhalb des Ausgabebaums. Eigene Ziele nutzen deshalb einen benachbarten Cache.

Dauerhaftigkeit und Sichtbarkeit

Dateiinhalte zu flushen ist nicht dasselbe wie Verzeichnisnamen zu flushen. Der Algorithmus berücksichtigt beides vor dem Löschen des Journals. Der Verzeichnistausch unterscheidet sich je Plattform; das Wiederherstellungsprotokoll berücksichtigt dies. Siehe lib/project/commit.odin und lib/project/publish.odin.

Dies schützt die Projektveröffentlichung, ist aber keine verteilte Transaktion mit einem Hostinganbieter. Einen erfolgreichen Build auf einen Server zu kopieren ist eine eigene Aufgabe des Deploymentwerkzeugs.