掌桥专利:专业的专利平台
掌桥专利
首页

一种代码版本的管理方法和管理系统

文献发布时间:2023-06-19 11:54:11


一种代码版本的管理方法和管理系统

技术领域

本申请涉及计算机技术领域,更具体地,涉及一种代码版本的管理方法和管理系统。

背景技术

一些软件开发项目需要多个开发人员对同一项目的一个甚至多个项目文件同时进行编辑和修改,从而实现协同开发。在协同开发过程中,同一个项目文件的相同或不同部分经多个开发人员编辑和修改,形成不同的代码版本。

由于多个代码版本的存在,在软件开发过程中容易引入诸多问题,例如代码不一致、代码冗余、代码的溯源困难,以及代码整合复杂程度高等问题,这些问题的解决依赖于代码版本的及时更新。

因此,急需一种及时更新和实时跟踪代码的历史版本的方法,实现代码的实时共享,在保护源代码的同时避免上述问题的发生。

发明内容

本申请提供一种代码版本的管理方法和管理系统,客户端定期与服务器同步代码更新状态,并通过服务器向客户端发送提醒以便及时更新代码并提交至服务器,确保了代码版本的更新速度,解决了代码不一致、代码冗余、代码的溯源困难以及代码整合复杂程度高的问题,提高了开发效率。

本申请提供了一种代码版本的管理方法,包括:接收客户端的代码更新状态;根据代码更新状态获得针对客户端的提醒信息;向客户端发送与客户端对应的提醒信息。

优选地,代码更新状态包括更新后的代码版本的当前存储位置及更新后的代码版本的提交标识。

优选地,根据代码更新状态获得针对客户端的提醒信息,包括:若更新后的代码版本的提交标识指示未提交,则生成提交提醒。

优选地,根据代码更新状态获得针对客户端的提醒信息,还包括:若更新后的代码版本的当前存储位置为工作区,则生成第一存储提醒,第一存储提醒指示将更新后的代码版本存储到缓存区。

优选地,根据代码更新状态获得针对客户端的提醒信息,还包括:若更新后的代码版本的当前存储位置为缓存区,则生成第二存储提醒,第二存储提醒指示将更新后的代码版本存储到仓库区。

优选地,还包括:若更新后的代码版本的提交标识指示已提交,则显示代码更新信息。

本申请还提供一种代码版本的管理系统,包括服务器和多个客户端;服务器分别与多个客户端通信连接,服务器执行上述的代码版本的管理方法;客户端获得代码更新状态并发送给服务器。

优选地,客户端包括工作区、缓存区和仓库区;代码更新状态包括更新后的代码版本的当前存储位置及更新后的代码版本的提交标识,当前存储区域为工作区、缓存区或仓库区。

优选地,客户端还包括第一显示单元,第一显示单元显示更新后的代码版本的当前存储区域。

优选地,管理系统还包括代码版本存储器,代码版本存储器为分布式版本控制系统。

通过以下参照附图对本申请的示例性实施例的详细描述,本申请的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本申请的实施例,并且连同其说明一起用于解释本申请的原理。

图1为本申请提供的代码版本的管理系统的结构图;

图2是本申请提供的一个实施例的代码版本的管理系统的数据传输原理图;

图3是本申请提供的代码版本的管理方法的流程图;

图4是本申请提供的一种实施例的代码版本的管理方法的流程图。

具体实施方式

现在将参照附图来详细描述本申请的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本申请的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本申请及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

实施例一

本申请提供了一种代码版本的管理系统。如图1所示,代码版本的管理系统包括服务器、代码版本存储器以及多个客户端(图中仅示出一个客户端)。

代码版本存储器用于存储代码的各个版本,方便代码的溯源和调用。

优选地,代码版本存储器采用分布式版本控制系统Git。版本控制是一种记录一个或若干文件或代码的内容修改,并可以查询特定版本的更改情况的系统,能够对任何类型的项目文件或代码进行版本的控制,便于不同的开发者协同开发。Git作为开源的分布式版本控制系统,因其便捷、高效性受到了广泛的使用,许多传统的非开源项目也逐渐开始使用Git来管理项目文件或代码的版本。Git使用的是分布式的版本控制,分布式的客户端不仅仅可以提取最新版本的文件快照,而且还可以把代码仓库整体全部镜像下来,所以不管哪一处的服务器发生了故障,都可以用其他任意一个镜像来恢复本地客户端的仓库区。每一次从服务器到本地客户端的克隆操作就相当于对本地客户端的仓库区进行了一次完整的备份。为了高效,如果项目文件或代码没有修改,Git一般只往Git数据库添加数据,且大部分操作都是本地进行,且分支功能的使用进一步保证了特定稳定版本的代码能够安全保存,使得代码维护人员可以放心修改代码。

在上述基础上,如图1所示,客户端包括工作区、缓存区、仓库区、代码更新状态模块以及第一显示单元。客户端可以由开发人员或管理人员来操作。开发人员利用客户端对代码进行编辑、修改等更新操作,并将更新后的代码版本存储到缓存区(例如通过添加(add)操作),缓存区的代码不定期或定期存储到仓库区(例如通过提交(commit)操作)。作为一个实施例,仓库区对代码版本的存储方式与Git相同。

管理人员通过客户端查看开发人员的代码更新情况,方便对开发项目进行管理。同时,客户端可以从服务器获取一个完整的代码版本(例如通过克隆(clone)操作)和复制一个代码版本(例如通过复制(fetch)操作)到本地客户端的仓库区,或从服务器直接拉取(pull)某个代码版本到工作区,对代码进行合并操作。作为一个实施例,clone操作中,将代码版本(例如,本地客户端中未存储的代码或代码分支)复制到本地客户端,新建一个与服务器同名的代码或代码分支保存在仓库区。作为一个实施例,fetch操作中,将服务器的最新代码版本拉到本地客户端,客户端的操作人员在检查该最新代码版本后决定是否将其合并到本地客户端中对应的代码或代码分支中。

作为一个实施例,代码更新状态模块是客户端后台的定时常驻服务(例如,客户端的code-status模块)。如图1所示,代码更新状态模块与仓库区、缓存区和工作区连接,其定时检查本地客户端目录下的代码更新情况、代码更新日志、代码存储情况和代码提交情况,获得更新后的代码版本的当前存储位置及更新后的代码版本的提交标识,形成代码更新状态并将代码更新状态发送给服务器。其中,当前存储区域为工作区、缓存区或仓库区。

第一显示单元为客户端提供显示,方便客户端的操作。本申请中,优选地,第一显示单元显示代码更新状态,方便操作人员直观地了解本地客户端内的代码的更新状态,比如更新后的代码版本的当前存储位置,更新后的代码版本是否提交到服务器等。

作为一个实施例,第一显示单元对本地的代码更新做出高亮显示。作为一个实施例,对于从服务端克隆的代码或代码分支,本地客户端的仓库区新建一个与服务器端同名的代码或代码分支,从工作区打开该代码或代码分支与仓库区保持一致,一旦对其修改,更新后的代码版本会暂时存放于缓存区,使用客户端提交(commit)操作将更新后的代码版本提交到本地仓库。由此,更新后的代码版本存在工作区、缓存区、仓库区三种存储状态、客户端对代码更新的显示基于这三种存储状态,采用不同颜色来区分,并通过动态高亮方式来显示。这样的方式实现了本地的代码版本控制。

同时,本地客户端可以创建新的代码或代码分支提交到服务器端,使所有项目管理人员和开发人员可以共享代码版本,简化了本地客户端及服务器端的代码版本控制。

更优选地,第一显示单元显示服务器发送给本地客户端的提醒信息(如下做详细说明)。

优选地,第一显示单元上设置多个功能的触发模块(例如,不同功能的按钮或触摸区域等),客户端的操作人员只需在第一显示单元上开启相应功能的触发模块就能对代码进行管理。具体地,作为一个实施例,触发模块可以实现的功能包括代码拉取、代码上传、代码合并、代码提交、代码分支管理、代码状态查询等等。

可以理解地,客户端还具有现有技术中公知的其他功能和模块,在此不再赘述。

服务器分别与多个客户端和代码版本存储器通信连接。如图1所示,服务器包括统计提醒模块和第二显示单元。

统计提醒模块接收每个客户端的代码更新状态,并根据代码更新状态进行分析和统计,获得针对每个客户端的提醒信息,并向客户端发送与该客户端对应的提醒信息,方便客户端收到提醒信息后及时保存和提交更新后的代码版本。

作为一个实施例,服务器通过向客户端发送邮件的方式进行提醒。

服务器接收客户端提交(例如通过push操作)的更新后的代码版本,并将更新后的代码版本发送给代码版本存储器进行存储。

优选地,对于已经提交到服务器的更新后的代码版本,服务器通过第二显示单元显示代码更新信息。作为一个实施例,代码更新信息指示代码的更新标识,例如,通过不同颜色显示不同代码或不同代码分支的更新标识,也可以通过列表的形式显示不同代码或不同代码分支的更新标识。代码更新信息的可视化有助于服务器操作人员了解和把握所有客户端的开发进度,为开发项目的管理提供了便捷的途径。

更优选地,服务器还包括代码提交跟踪模块,代码提交跟踪模块用于响应于服务器的操作人员通过服务器的操作界面、项目管理人员或开发人员通过客户端的操作界面发起的代码提交记录的跟踪查询请求获得代码版本的更新内容、更新时间、更新人员等。代码提交跟踪模块的查询结果通过服务器的第二显示单元或客户端的第一显示单元进行显示。代码提交跟踪模块可以实现代码版本的高效查询,方便代码版本的管理和利用。

当客户端需要获取某个代码版本时,服务器从代码版本存储器调用该代码版本并发送给客户端,方便客户端拉取整个代码版本、合并某个代码版本等。

可以理解地,服务器还具有现有技术中公知的其他功能和模块,在此不再赘述。

可以理解地,服务器和客户端之间的交互还可以实现其他的功能,如新建分支(例如branch操作)、删除文件(例如rm操作)、合并分支(例如merge操作)等等。

基于上述管理系统,如图2所示,本申请提供了一个实施例的管理系统的数据传输原理。

作为一个实施例,客户端和服务器通过http协议实现通信。

如图2所示,客户端(例如项目管理人员或开发人员)向服务器发送http请求,该http请求包括代码版本的提交请求、代码版本的获取请求、查询请求等请求。服务器通过http协议将http请求转发给轻量级反向代理服务器Workhorse,Workhorse对http请求上传与下载,其中关于Git包下载的http请求通过调用命令解析器git-shell直接处理,git-shell对Git命令进行处理、对authorized keys列表进行修改操作;关于其他请求,Workhorse通过http协议将请求转发给托管服务器Unicorn进行处理,Unicorn是Git Rails框架的托管服务器,处理Workhorse处理不了的请求。通过git-shell和Unicorn处理的http请求的结果按照原路径返回给服务器和客户端。

具体地,git-shell通过http协议向Git数据库提交请求,并通过SSH协议从Git数据库下载代码版本数据。SSH认证保障SSH服务器的合法性,有效的避免“中间人”攻击,确保了代码版本的安全性。

客户端的代码更新状态模块通过http请求将代码更新状态发送给服务器,并接收信息处理结果。

作为一个实施例,本申请中服务器为web服务器。作为一个实例,web服务器为Nginx服务器。

在采用Git的实施例中,与现有技术相比,本申请的服务器端能够实时查看客户端的代码更新,有利于项目管理者对客户端的实时把控,因此本申请实现了双向版本控制。

实施例二

本申请还提供了一种与实施例一匹配的服务器侧的代码版本的管理方法。如图3所示,管理方法包括如下步骤:

S110:接收客户端的代码更新状态,代码更新状态包括更新后的代码版本的当前存储位置及更新后的代码版本的提交标识。

S120:根据代码更新状态获得针对客户端的提醒信息。如下通过图4及相应的描述来说明该步骤。

S130:向客户端发送与客户端对应的提醒信息。

图4是本申请提供的一种实施例的服务器侧的代码版本的管理方法的流程图。如图4所示,管理方法包括如下步骤:

S410:接收客户端的代码更新状态。请结合实施例一和S310的说明理解该步骤。

需要说明的是,S420、S450和S470可以先后执行或同步执行。

S420:判断更新后的代码版本的提交标识是否指示未提交。若是,则执行S430;否则,执行S440。

S430:生成提交提醒。随后执行S490。

S440:在服务器的第二显示单元上显示代码更新信息。作为一个实施例,代码更新信息指示代码更新的标识,例如,通过不同颜色显示不同代码或不同代码分支的更新标识,也可以通过列表的形式显示不同代码或不同代码分支的更新标识。代码更新信息的可视化有助于服务器操作人员了解和把握所有客户端的开发进度,为开发项目的管理提供了便捷的途径。

S450:判断更新后的代码版本的当前存储位置是否为工作区。若是,则执行S460。

S460:生成第一存储提醒,第一存储提醒指示将更新后的代码版本存储到缓存区。随后执行S490。

S470:判断更新后的代码版本的当前存储位置是否为缓存区。若是,则执行S480。

S480:生成第二存储提醒,第二存储提醒指示将更新后的代码版本存储到仓库区。随后执行S490。

S490:向客户端发送与客户端对应的提醒信息,该提醒信息包括S430生成的提交提醒、S460生成的第一存储提醒以及S480生成的第二存储提醒等提醒信息。

本申请的有益效果如下:

1、本申请中客户端能够看到服务器端的代码的历史记录,同时服务器端也能查看到客户端的代码的历史记录,实现了双向版本控制、方便跨地方的多人协同开发中历史版本的追踪和记录,能够更好地对项目文件或代码进行管理,保护源代码的同时减轻了开发人员的负担,节省了时间的同时降低了人为发生的错误,提高了开发效率,大幅度增强了安全性、可靠性和可用性。

2、本申请通过服务器的统计提醒模块对客户端进行代码提交和存储情况检测、代码更新的统计并提醒,实现了服务器端对客户端的代码提交管控。

虽然已经通过例子对本申请的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上例子仅是为了进行说明,而不是为了限制本申请的范围。本领域的技术人员应该理解,可在不脱离本申请的范围和精神的情况下,对以上实施例进行修改。本申请的范围由所附权利要求来限定。

相关技术
  • 一种代码版本的管理方法和管理系统
  • 一种应用代码包版本管理方法及装置
技术分类

06120113098906