git 源码学习
Preface
最近趁上一个工作任务刚结束,新的任务还在规划中,难得清闲几天,可以抽点时间来看下 Linus 大神在2005年写的 git,为了简单,理解git 的原理,我们可以 checkout 刚开始的版本 比如hash为 79517a067
。 这个版本总代码量只有1491 行。
Compile
依赖包:libssl-dev、zlib 修改编译选项:Makefile中LIBS 增加 -lcrypto 编译完之后会生成可执行文件: update-cache show-diff init-db write-tree read-tree commit-tree cat-file fsck-cache checkout-cache
Analysis
1 init-db 初始化工作目录: 在当前路径下创建目录,
.dircache
└── objects
├── 00
├── 01
├── ...(255 dirs)
├── fe
└── ff
2 update-cache