- 为防止init_commit的重复创建,应把init_commit写入.gitlet,一次创建,其他地方直接引用
- sha接受byte数组,需要readContents先转化为 byte[]
- 暂存区分tobeadded和tobeDeleted两种
- 获取timeStamp:
1 2 3
| Date now = new Date();
Date inittime = new Date(0);
|
转换得到String类型的timeStamp
1 2 3 4
| static String dateToTimeStamp(Date date) { DateFormat dateFormat = new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy Z", Locale.US); return dateFormat.format(date); }
|
1 2
| sha1(Map.toString(), getParentCommit(), getMessage(), getTime());
|
而非通过把commit暂存为序列化后的文件来计算hash, 可能java序列化不太稳定?
反正不适合用来算hash
- 由于过度依赖序列化导致我把很多指针直接写成文件来存储,这是错误的
- 考虑到后面肯定是要调试的,临时写的这一坨明天得重构一下,这个项目骨架还是给太多了,如果不是因为后面有gradescope, 那我会考虑把这些骨架全都删了,就留个Utils和main,
- 看了别人写gitlet的感受之后感觉有点不对,我应该把他当成一个自由的项目来写,而不是边写边一字一句看文档,毕竟gitlet长什么样不用看文档也足够清楚