很久没有更新博客了,曾经规划了很多plan都没有执行,前段时间看到的一个有趣的项目:UCB的CS61b课程,实现一个Gitlet。从今天开始,持续更新。
背景
Gitlet是一个类似于Git的版本控制系统,而版本控制系统本质上是计算机上文件的备份系统,Gitlet支持的功能主要包括:
- 保存文件目录的备份。在Gitlet中,这被称为提交(committing),而备份本身被称为commits
- 还原一个或多个文件版本或整个提交。在Gitlet中,这被称为check out
- 查看备份历史记录。在Gitlet中,使用log来查看历史
- 维护分支。维护相关的提交序列,称为branch
- 合并。将一个分支的更改合并到另一个分支中
仓库地址:https://github.com/cs61bl
文档说明:https://cs61bl.org/su17/materials/proj/proj2/proj2.html
框架设计
- blobs:文件的内容,对于项目中的每一个文件,都有一个blob保存这个文件
- trees:将名称映射到blob和其它树(子目录)的引用的目录结构
- commits:由元数据(提交日期、作者)、日志信息、其它节点的引用组成