跳转至

PRD 总览

这一部分展示的是 python-git-reproduction 的产品需求文档,但它不是把一份超长 PRD 粗暴贴上来,而是拆成多个主题文件,以便阅读、维护和追踪实现进度。

为什么要拆 PRD

原始需求覆盖的内容非常多:

  • 仓库目录结构;
  • 四类核心对象;
  • Index V2;
  • 管道命令;
  • 瓷器命令;
  • merge;
  • pack 与远端;
  • 非功能性约束;
  • 分阶段路线。

如果把这些全部塞在一份巨型文档里,几个问题很快就会出现:

  • 读的人很难定位主题;
  • 改动一个点容易影响整个文档;
  • 任务很难映射回具体需求;
  • 教学价值会下降,因为文档变成了大段文字堆积,而不是结构化知识。

所以拆分 PRD 不是格式癖,而是维护策略。

怎么使用这一部分

如果你是第一次接触这个项目,不建议一上来就从 PRD 开始读。
更好的顺序是:

  • 先看英文首页或中文首页;
  • 再看快速开始;
  • 再看 Git Teaching、Build Git Teaching 或 Project 部分;
  • 需要正式规格时,再回来查 PRD。

PRD 更适合作为“正式参考层”,不是“第一节入门课”。

PRD 当前结构

当前拆分主题包括:

  • 00-overview:项目目标、范围和兼容性原则;
  • 01-repository-layout.pygit 仓库结构;
  • 02-object-database:blob、tree、commit、tag;
  • 03-index:Index V2 暂存区;
  • 04-plumbing-commands:底层命令;
  • 05-porcelain-commands:上层命令;
  • 06-merge:合并与冲突处理;
  • 07-packfile-remote:pack、fetch、push、clone 和远端范围;
  • 08-non-functional:性能、锁、校验、异常和测试要求;
  • 09-roadmap:实现路线。

每个文件只负责一个主题,这样后续更新更容易控制范围。

PRD 和 SDD 的关系

在这个项目里,PRD 不是装饰性文档。它是 SDD 流程的起点之一。预期关系应该是:

  1. PRD 先定义需求;
  2. 任务清单从 PRD 派生;
  3. 模块设计围绕需求展开;
  4. 代码实现落地;
  5. 测试和安全边界验证实现是否符合需求;
  6. 当边界变化时,反向更新 PRD 和文档。

如果没有这条关系,PRD 就很容易变成“写完没人看”的静态文件。

PRD 不等于功能已经全部完成

这一点必须特别注意。PRD 描述的是目标和期望行为,不天然等于“仓库当前已经全部实现”。

因此,读 PRD 时必须和这些内容一起看:

  • 项目当前实现边界;
  • 任务清单;
  • SDD 工程要求;
  • 当前测试和验证状态。

只有把这些一起看,才能区分“需求目标”和“当前已完成实现”。

建议阅读顺序

正式阅读 PRD 时,建议按这个顺序:

  1. 00-overview
  2. 01-repository-layout
  3. 02-object-database
  4. 03-index
  5. 04-plumbing-commands
  6. 05-porcelain-commands
  7. 06-merge
  8. 07-packfile-remote
  9. 08-non-functional
  10. 09-roadmap

这个顺序能让你从“系统是什么”,一路走到“系统怎么运行、怎么约束、怎么扩展”。