今天我们在GitHub上发布了新版本的Simple-SCM。当release了这个版本后,回顾这个项目的开发历程,心中有许多想说的,希望能以这样一篇随笔的形式,分享给你。

四个月之前

Simple-SCM刚刚起步

  四个月之前,那会儿C++课程实训刚刚开始。陶老师给了算法和项目两个方向,并且也准备了一些选题供同学们参考。这些选题从简单到深入的都有,比如算法的排序再到手撕LSTM、项目的坦克大战再到系统加速器。

  我们三个同学,我,锴东和闻杰,组了一支队伍。我当时就在思考,到底做一个什么样子的东西出来。手撕算法吧,虽然可以手撕出LSTM、CNN,尽管这些选题都很不错,但是,emm我感觉这些不是我在实训中想要的方向。然后再说到老师给出的题目吧,我觉得都是有很多教程的东西,我不想照着教程抄一个,我希望能自己设计一个项目,从需求分析、系统设计再到最终的代码实现,都是我们几个同学自主完成的。

  我最开始是想照着Github上的OS(操作系统)的代码,学习人家的思想,再自己实现一个简单的kernel。虽说写一个模拟OS的程序,并不是特别特别的难,还是可以达到。但是,要能在真机上跑起来,还得考虑很多东西。我找小汤师兄聊了好几次选题的问题,他觉得写一个OS的风险太大了,一个月写出来的话,如果能开机就已经很牛了。最怕就是开不了机,那答辩的时候怎么办?

  接着我又提出手撕一个光追版的3D扫雷,他觉得这个意义不是很大,毕竟扫雷这种游戏,哪怕做3D了,通过光栅化就可以获得很不错的画面,完全没必要光追。

  思索半天后,汤总跟我提了一个建议:可以做一个类似于Git的版本控制系统。我一想,好像不错哦!难度应该跳一跳还是能够得着的,哪怕没完成,都能有一定的效果!

  回来之后我就和锴东、闻杰说了这个想法。商量之后我们决定就做这个,我主要负责需求的分析还有架构的设计,把架构弄出来之后,大伙儿一起敲代码。我说,不如软件就叫做Simple-SCM吧!表达我们对这个项目的期盼:在架构、实现、使用上,都是Simple的。

第一个版本的架构图

三个月之前

第一个版本发布

  经过一个月的开发,Simple-SCM的第一个版本就做出来了。总共四千五百行代码,一个还算适中的数字。

  在开发初期,我们找到了Git的0.01-0.03版本的代码,仔细地去研究了当年Linus对Git的设计。大致搞清楚了他对于业务流程的处理方式。当然,在具体的实现方式上,我们和他当年是不同的,我们采用的工具、库都不完全一样。在学习Git的源代码的过程中,我还是学到了很多的,这对我的Coding能力的提升有很大的帮助。

  在那一个月里,我们写了很多很多的代码,按照git的提交记录显示,我创建了一百多个commit,存留的代码量大约两千多行。尤其是最后那个星期,我们Debug搞到疯,各种奇怪的bug,解决了一个又出来一个。不过我们最终都把他们解决的差不多了。

  于是,我们在Github上,以开放源代码的方式,发布了第一个版本。这个版本提供了最基本的基于分支的版本管理功能。在发布当天,我还发给了师兄,请他体验一把。师兄夸我们这个做的有模有样的。

  令我惊讶的是,发布后的当天,我们的项目的克隆量居然有数十次!有很多人下载了我们的代码!这令我十分的惊喜。

数据截至2021年6月25日11:00
(因此6月25日数据尚未更新)

  为此,我还专门做了一个软件LOGO~

上个月

C++实训作品发布会初赛&提交软著申请

  我们的作品参加了实训作品发布会的初赛,幸运地成为8支晋级队伍之一。

  然后,上个月底,我们三个,共同将软著申请材料寄出~希望能一次审核通过吧!

共同将申请材料寄出
(左)闻杰 (中)龙进 (右)锴东

今天

新版本发布

  这两天突然意识到,Simple-SCM已经两个多月没有更新了。想了想,当时的版本其实有很多可以改进的地方,就想闲暇的时候更新几个小功能吧。

  虽说是更新几个小功能,但是对于整个项目的改动还是蛮多的。由于当初设计的时候没有考虑到软件升级的问题,因此我对软件的架构进行了修改,增加了联网更新机制以及存储库迁移的模块,能够使得旧版本的存储库迁移到新版本上来。并且,为了了解到底有多少人在使用我们的软件,我还开发了统计服务。这些虽然没有对用户的使用产生非常直接的影响,但是确实是比较关键的几个组件。在这些组件的设计上,我尽自己所能,尽量考虑周全。图片

新版本的系统架构图

  这次的功能更新,我只增加了修改已有的commit的注释的功能,这个能解决有时候手滑打错字导致注释有误的问题。

  并且,我们还为这个项目构建了安装包,能够在所有AMD64处理器的Linux系统上运行,降低用户安装、更新的难度,节省时间。

  这真的是两个很小很小的功能,但这是一个起点,是我们这个开源项目迭代更新的起点。这个版本使得Simple-SCM向更加完善的软件迈出了第一步。

  上面这张图,是我们对于未来的展望,也算是TODO吧。最最主要的就是增加diff比较算法,这样才能使得我们的分支合并更加的智能。我觉得,加入这个算法后,Simple-SCM才能称为一个真正意义上的现代SCM。我认为,一个在分支合并问题上,都无法实现无冲突解决的版本控制系统,并不能称之为现代的SCM

  讲到这里,其实我的远期想法已经很明确了,做一个更强大的,比Git厉害的版本控制系统。当然,这需要很大的努力,也不是我们三个的能力就能完成的,而是需要更多人的参与。因此我们当初选择了开放源代码,希望我们的代码能够帮助更多的人了解、学习、尝试去构建一个基于分支的版本控制系统,也更希望有更多的人能参与到这个项目的开发中,采用社区驱动的方式,达成我的预想。

  如果正在看这篇文章的你,愿意加入,我们欢迎你在GitHub上发起Pull Request,成为这个项目的Contributor。

  关于Simple-SCM的一切问题,欢迎你与我们联系。

我们的电子邮箱:RinGoTek@RinGoTek.cn

GitHub项目地址:https://github.com/We-are-ACMen/simple-scm

关于赞赏:赞赏的资金将会用于Simple-SCM的开发以及服务器维护,赞赏者的名单将会出现在项目中~非常感谢所有的用户与赞助者的支持!

欢迎大家在看了这篇文章后,在GitHub下载Simple-SCM的安装包,在Linux系统上体验,成为我们的第一批用户。

  现在安装,就是老用户啦!

转载请注明原文:https://www.longjin666.top/?p=1135

欢迎关注我的公众号“灯珑”,让我们一起了解更多的事物~

你也可能喜欢

发表评论