Guidedog / ドキュメント
0.2.0
完全な世代を公開する¶
読者に更新途中のサイトを見せてはならない。これは公開の性質であり、解析や描画とは別の問題だ。
不変条件¶
公開済みの出力木を \(P\) とする。準備中は \(P\) を変えず、次の木 \(Q\) を完成させてからコミットを決定する。ジャーナルは出力と対応する記録を指定する。
準備は失敗し得る。 ホストは未完成の世代を破棄する。確定したコミットも中断し得る。 次のビルドはジャーナルに基づいて完了または復元する。ステージング名から推測しない。
キャッシュを出力先の外に置く理由¶
ディレクトリー交換は中の全てを動かす。ジャーナルを中に置くと、記録している操作自身で移動し、復旧時に位置が安定しない。Guidedog は公開木の外の安定した場所に記録を置く。そのため独自の出力には同階層のキャッシュを使う。
永続性と可視性¶
ファイル内容の永続化とディレクトリー名の永続化は別だ。ジャーナルを削除する前に両方を扱う。交換方法はプラットフォームで異なり、復旧プロトコルはそれを考慮する。実装は lib/project/commit.odin と lib/project/publish.odin。
これはプロジェクトの公開を保護する。外部ホスティングとの分散トランザクションではない。成功したビルドをサーバーへコピーするのは、デプロイツールが担う別の操作だ。