gitlet完成纪念
2024-10-16
| 2024-10-16
0  |  Read Time 0 min
type
status
date
slug
summary
tags
category
icon
password

前言

首先将自己的gradescope成绩放过来
notion image
早在进行CS61B学习之前就听说过gitlet的大名,可以说这是来自UCB的课程中最为出名的项目之一,它包括了60多页的Spec文档、几乎为零的skeleton代码(仅提供了几个相关的类)、相当繁杂的文件操作以及链表构建还有令人纠结的诸多逻辑。
我从gitlet上花费的时间没有具体计算,但从开始构建Merge命令的时候,我开始使用wakatime来记录自己编写代码的时间,所以以下时间可以看做是我构建Merge+debug代码的时间,这里列出。
notion image
是的,光是构建merge指令,加上debug的时间就已经有14个小时了,也就是说整个项目起码有30+小时的时间进行构建,这还只包括敲代码的时间,还不包括思考思路的时间,大家可以想象一下这个项目的难度。

学习到的东西

但是!虽然我说了这么多,如果你要问我这个项目值不值得,我还是觉得非常的值。
通过gitlet这个项目,我学习到了:
  • git操作的底层原理,之前一直了解,但知识结构不是很清晰
    • 听说gitlet的remote 相关操作底层原理和真实git其实有不小差距,加上时间原因实在不允许我慢悠悠再构建remote相关代码,我就没有将其实现,如果是本科的同学们有比较充裕的时间,可以来进行对作为extra部分的remote相关进行实现
    • 准确来说是学习了对一些功能在底层实现上面的解构思想
  • 文件形式的链表操作,同时学习了BFS广度优先在代码中大致怎么实现的
  • 面向函数式编程,这个思想我觉得是项目构建的很重要的一环,在想要一个功能的时候,编写一个功能的函数,然后将文件中相关功能的部分解耦合,这样就在修改的时候就不需要分别进行更改
    • 但这个其实项目做多的之后,本能上就是会意识到这个问题,会实现模块解耦
    • 但是抽象性思维真的很重要,所以说不管怎么说还是重新意识到了这一点
  • 集成测试的思路
    • 有但不多,因为我为了节约时间都是直接在网上找了找大家爬下来的testing文件进行的面向测试编写
  • make的使用
    • 有但不多,基本都是直接使用make指令,过两天找找相关make的文章再详细地学学

项目构建

这方面内容我写在Repo中了,有兴趣的同学可以去看看:https://github.com/thanyi/gitlet,但是最好还是自己看看思路就好

相关链接

  • 知识学习
  • 开发
  • Mit6.5840 Lab1笔记how2heap
    • Giscus
    • Cusdis
    Catalog