Gitlet

很久没有更新博客了,曾经规划了很多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:由元数据(提交日期、作者)、日志信息、其它节点的引用组成

代码结构