项目总览¶
这一部分讨论的是“这个仓库作为工程项目是怎么组织的”,而不是只讨论命令怎么用。
如果 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 基础能力;
- 本地路径远端;
- 自建
.pygitTCP 服务器。
明确不覆盖:
- GitHub 集成;
- SSH Git;
- HTTP Git;
- 官方 Git wire protocol;
- Git LFS。
这个边界必须说清楚,因为“复现 Git 核心能力”和“复现整个 Git 周边生态”不是一回事。
建议阅读顺序¶
建议你按这个顺序看:
这样读下来,你会更容易看明白这个仓库为什么能持续扩展,而不是越写越乱。