# Java Course Project **Repository Path**: Wytrix/java-course-project ## Basic Information - **Project Name**: Java Course Project - **Description**: 北京大学软件与微电子学院Java程序设计课程项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-10-29 - **Last Updated**: 2022-05-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: Git, Jit, 版本控制系统 ## README # Java Course Project #### 介绍 北京大学软件与微电子学院Java程序设计课程项目 基于Java的分布式版本控制系统Jit #### 软件架构 ##### 2021.12.09项目推进说明 此次添加了众多代码。 需要的共识:(1)name作为对象GitObject的名称,应具有完整的相对路径。 ###### 1、Tree的改进 (1)添加新的构造方法,允许只作为对象存在于内存中,且不生产hash和Tree文件。 (2)新增私有方法readValue、sortValue、writeValue,对value的结构化读入、排序、重写入value。 (3)新增方法addBlobFromIndex从外部add操作记录的数据读入成为blob的value数据。 (4)新增方法setKeyForHashMap能对整棵Tree及其子目录的文件和目录用HashMap索引加入判重。 (5)新增方法makeTree,能根据文件路径建立增量树,用来维持当前的add树结构。 (6)新增方法buildTree,能够对当前add增量树的目录Tree进行全部Hash以及写入,用于Commit。 (7)genKey、File参数的构造函数目前不用,updateValueForBlob、updateValueForTree暂时无用,考虑删除。 ###### 2、JitIndex类的加入 (1)JitIndex类拥有一个TreeMap成员,用于维护暂存区内容,Key为文件path,Value为blob的toString以及时间、路径文件名。 (2)执行序列化,存储为index文件。 ###### 3、Commit类更新 (1)新增方法writeToHead,把当前Commit的key写入对应分支的head中。 ###### 4、JitAdd更新 (1)使用目录添加时,只添加Blob内容,同时维护index的TreeMap结构。 (2)JitAdd使用静态index成员和commitMap初始化后,用于维护已add内容和之前commit已add内容 注意:不仅要保存hash值,还要保存路径和Bolb、Tree类型(fmt)。 ###### 5、JitCommit更新 (1)使用Tree里的方法buildTree来递归更新整个Tree的Hash,并同时写入。 (2)使用Commit类你的writeToHead来更新Head。 ###### 6、JitReset更新 (1)通过新的Commit和index类来完成了reset功能。 ###### 7、JitRm更新 (1)通过新的index来完成了rm功能。 ###### 8、JitBranch更新 ``` (1)新建未存在的分支 (2)删除已经存在的分支 (3)输出所有存在的分支并且标注当前分支 ``` ###### 9、JitCheckout更新 ````chinese (1)切换至某一个分支 (2)切换并新建某一个分支,倘若存在,则重置 ```` ###### 10、Repository更新 (1)添加Head指向为refs/heads/BrabchName来维持可选的分支结构。 (2)添加初始化作者名和邮箱的.jitConfig文件。 (3)禁止覆盖写入。 ###### 11、待完善 (1)JitLog需要使用log目录来保存所有的提交信息。 (2)Tree添加属性add or delete,用来对删除的文件进行管理。 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)