git-rs

早期 Git 存储模型的 Rust 学习实验

项目目标

把 Git 先看成一个很小的内容寻址文件系统:对象库负责保存内容,index 记录工作区状态,tree 固化目录快照,commit graph 再把快照连接成历史。

这个实验不是为了替代 Git,而是用可运行代码理解一个经典系统的边界。

当前状态

当前实现已经覆盖 object、index 和 tree 的最小模型,并记录了测试数量、命令边界和后续验证点。下一步是亲自完成从空目录开始的手动验收,再决定是否继续推进 commit graph。

测试覆盖object、index、tree 关键路径
5最小命令:init、update、write、read、cat
0不写真实现代 Git 仓库

最小模型

object db

内容寻址存储。对象名来自内容,文件路径由 SHA1 拆成二级目录。

index

工作区状态缓存。它不是提交,而是路径、stat、mode 和 blob id 组成的可变 staging filesystem。

tree

不可变目录快照。把 basename 映射到 blob 或子 tree,用二进制 payload 表达目录结构。

commit graph

下一层才是历史:tree 指针、parent 指针、作者信息和提交说明。

当前验收线

工程边界

为什么这个实验重要

它把一个长期停留在书本里的系统问题压缩成可以运行、可以观察、可以失败的代码。对我来说,价值不在于重写 Git,而在于重新获得对底层系统的可验证理解。

这类实验也会反过来影响可靠数据队列、dumpdb 文件组织和内容寻址存储方面的工程判断。

返回作品集首页