Git 内容仓库契约

GitArchitecture 更新于 2026-09-03T00:00:00Z

Git 内容仓库契约

所有写操作都必须携带 baseSha(期望的当前 blob SHA)。Git 中实际 SHA 与 baseSha 不一致时,返回 409 CONTENT_CONFLICT,绝不静默覆盖。

接口

interface ContentRepository
{
    public function read(string $path): ContentDocument;
    public function write(string $path, string $content, string $baseSha, CommitActor $actor): CommitResult;
    public function delete(string $path, string $baseSha, CommitActor $actor): CommitResult;
    public function list(string $prefix): array;
}

冲突语义

重建

删除数据库索引后,从 Git clone 遍历 content/posts/*.md 即可完整重建后台列表,数据库不是内容真相。