跳转至

项目总览

这一部分讨论的是“这个仓库作为工程项目是怎么组织的”,而不是只讨论命令怎么用。

如果 Git Teaching 讲的是 Git 原理,Build Git Teaching 讲的是如何实现 Git,那么 Project 这一组页面讲的是:为了把这样一个复杂系统项目长期做下去,仓库结构、任务拆分、工程约束和提交质量应该长什么样。

为什么需要这一部分

很多人能看懂 Git 教程,却不一定能把一个 Git 复现项目真正组织好。常见问题包括:

  • 功能会做,但模块边界混乱;
  • 会写代码,但危险操作没有统一保护;
  • 会跑几个 demo,但测试没有证明真实仓库状态;
  • 文档很多,但任务和规格之间没有映射关系。

这部分就是为了解决这些问题。

这里包含什么

这一组页面主要覆盖四个角度:

  • 任务清单:这个项目是如何拆任务的;
  • 项目结构:代码目录和模块职责如何划分;
  • SDD 工程要求:哪些规则是必须遵守的,不是建议项;
  • 这些规则如何一起支撑一个“不是玩具”的 Git 复现项目。

项目的真实目标

这个项目不是为了证明“Python 也能算 SHA-1”。它真正的目标是尽可能复现 Git 的核心系统行为,让这些行为可以被阅读、测试、维护和教学:

  • 对象是内容寻址的;
  • tree 表示目录快照;
  • commit 形成历史图;
  • refs 提供可移动名字;
  • index 是二进制暂存区;
  • merge 是图和内容的联合问题;
  • 远端同步依赖对象发现、pack 传输和引用更新;
  • 破坏性命令必须受到边界保护。

当前项目边界

当前项目已经覆盖:

  • 本地 .pygit 仓库工作流;
  • 对象数据库;
  • Index V2;
  • refs、tags 和 detached HEAD
  • branch、checkout、switch、reset、stash、merge;
  • pack 与 idx 基础能力;
  • 本地路径远端;
  • 自建 .pygit TCP 服务器。

明确不覆盖:

  • GitHub 集成;
  • SSH Git;
  • HTTP Git;
  • 官方 Git wire protocol;
  • Git LFS。

这个边界必须说清楚,因为“复现 Git 核心能力”和“复现整个 Git 周边生态”不是一回事。

建议阅读顺序

建议你按这个顺序看:

  1. 先看任务清单,理解项目做了哪些工作;
  2. 再看项目结构,理解这些工作在代码里放在哪里;
  3. 最后看SDD 工程要求,理解为什么这些规则不能放松。

这样读下来,你会更容易看明白这个仓库为什么能持续扩展,而不是越写越乱。