gitlet是git的简化版,实现了add、commit、branch、checkout、merge等操作。很好地考察了基础数据结构和编写调试代码的能力。同时对文档的阅读也是很好的锻炼,涉及一点软件工程。 git是一个分布式的版本控制、管理工具,有一定代码编写经历的一定对此不陌生。git通过commit来区分不同版本,使用add、rm、merge等对当前版本操作。
接下来说一下gitlet的内部实现,首先,gitlet init命令会创建.gitlet文件夹,.gitlet文件夹是一个隐藏文件,windows要先打开显示隐藏文件的设置,linux或macox可通过ls -la进行查看,gitlet绝大部分操作都在.gitlet文件夹中进行工作,此文件夹的结构如以下代码所示。 /** .gitlet* |--objects* | |--commit and bl...
关于gitlet(proj2) 真的非常棒 足足把我碾了五遍!(第一次时读文档说明的时候) 大概有4次大改,第1次是逻辑都不通畅,第2次是代码实在是太繁琐,第3次是持久性乱写,存储的东西乱七八糟的,第四次是merge没有复用,把我写麻了 (写了5h的代码说删就删了…..) 我觉得做一个类似于这样的项目真的可以改掉很...
Gitlet A project for Data Structures and Algorithms (CS61B), UC Berkeley's second introductory computer science course. The project involves creating a version control system which mimics some of the basic features of Git, as well as some additional features. The features implemented areinit,add...
package gitlet; /** Driver class for Gitlet, a subset of the Git version-control system. * @author TODO * @author Li Yanzhuo */ public class Main { @@ -19,7 +19,7 @@ public static void main(String[] args) { } String firstArg = args[0]; switch(firstArg) { switch (firstArg...
早在进行CS61B学习之前就听说过gitlet的大名,可以说这是来自UCB的课程中最为出名的项目之一,它包括了60多页的Spec文档、几乎为零的skeleton代码(仅提供了几个相关的类)、相当繁杂的文件操作以及链表构建还有令人纠结的诸多逻辑。 我从gitlet上花费的时间没有具体计算,但从开始构建Merge命令的时候,我开始使用wakatime...
java gitlet.Main checkout -- [file name] java gitlet.Main checkout [commit id] -- [file name] java gitlet.Main checkout [branch name] 若checkout切换分支,且当前目录下文件有文件未被跟踪,则打印提示信息并退出。 注意切换完成,将新分支放入heads目录的同时,从heads目录中删除先前的分支。 checkout ...
Proj2: Gitlet V1 2024/04/25 1468.8/1600.0 还没有做远程之类的加分项目,最终提交后扣了163.2的格式分,实在改不动了就这样吧( 整体感觉大部分命令实现起来还是比较简单的,编写checkout的时候废了不少功夫重构Blobs和Commit类花了比较多的时间。 merge是最难的,写了好几天调试也好几天。一开始找分割点没有从...
18 changes: 4 additions & 14 deletions 18 proj2/gitlet/Makefile Original file line numberDiff line numberDiff line change @@ -2,23 +2,19 @@ # # default: The default target: Compiles $(PROG) and whatever it # depends on. # style: Run our style checker on the project source fil...
join(".gitlet", "index"); private static final File HEADS_DIR = Utils.join(".gitlet", "refs", "heads"); /** The message of this Commit. */ private String message; private final String message; /** commit所处分支 */ private String branch; private final String branch; /** commit...