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;
}
冲突语义
- 客户端读到 blob SHA
abc123。 - 另一方提交后 SHA 变为
def456。 - 客户端用
abc123写入 → 409 + 当前 SHA + 机器可读提示。
重建
删除数据库索引后,从 Git clone 遍历 content/posts/*.md 即可完整重建后台列表,数据库不是内容真相。