CN114579171A - 代码处理方法、装置、计算机设备和存储介质 - Google Patents
代码处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN114579171A CN114579171A CN202210237357.6A CN202210237357A CN114579171A CN 114579171 A CN114579171 A CN 114579171A CN 202210237357 A CN202210237357 A CN 202210237357A CN 114579171 A CN114579171 A CN 114579171A
- Authority
- CN
- China
- Prior art keywords
- code
- modification
- user terminal
- target branch
- basic code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请涉及一种代码处理方法、装置、计算机设备和存储介质,应用于人工智能领域,所述方法包括:接收第一用户终端提交的针对代码服务器上目标分支的修改代码;所述修改代码基于所述目标分支的第一基础代码修改得到;获取所述目标分支对应的当前基础代码;在所述第一基础代码与所述当前基础代码相同的情况下,根据所述修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码,并且发送所述第二基础代码至第二用户终端,使所述第二用户终端以所述第二基础代码为修改基础,对所述目标分支进行代码修改。采用本方法能够使得第二用户终端能够感知到目标分支上代码版本的更新,并基于最新的分支代码进行代码修改,降低代码冲突机率。
Description
技术领域
本申请涉及人工智能技术领域,特别是涉及一种代码处理方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
在代码开发过程中,可能需要多个开发人员修改同一个模块代码或公用模块代码,当多人提交一个公共代码时,容易出现修改内容相冲突的情况,目前解决这种冲突的方法是***调用文本比较工具列出和基线代码的不同,然后由代码提交人进行确认合并提交。
然而,这种方法在修改同一个模块代码的用户较多时,进行冲突合并将会消耗大量的时间,造成时间和人力的浪费。
发明内容
基于此,有必要针对上述冲突解决方法存在的时间和人力浪费的技术问题,提供一种代码处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种代码处理方法。所述方法包括:
接收第一用户终端提交的针对代码服务器上目标分支的修改代码;所述修改代码基于所述目标分支的第一基础代码修改得到;所述代码服务器存储有多个分支的不同版本的代码;
获取所述目标分支对应的当前基础代码;
在所述第一基础代码与所述当前基础代码相同的情况下,根据所述修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码,并且发送所述第二基础代码至第二用户终端,使所述第二用户终端以所述第二基础代码为修改基础,对所述目标分支进行代码修改。
在其中一个实施例中,在所述根据所述修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码之后,还包括:
生成所述第二基础代码对应的测试用例;
根据所述测试用例,更新所述目标分支的当前测试用例表。
在其中一个实施例中,所述方法还包括:
在所述第一基础代码与所述当前基础代码不同的情况下,发送提示信息至所述第一用户终端;
所述提示信息用于指示所述第一用户终端从所述代码服务器获取所述当前基础代码,并以所述当前基础代码为修改基础进行代码修改,或者对所述当前基础代码和所述修改代码进行合并处理。
在其中一个实施例中,在所述发送提示信息至所述第一用户终端之后,还包括:
接收所述第一用户终端提交的新的修改代码;所述新的修改代码基于所述当前基础代码修改或合并得到;
获取所述当前基础代码对应的历史修改代码的测试用例;
通过所述历史修改代码的测试用例,对所述新的修改代码的功能进行回归测试,并保存回归测试结果至数据库。
在其中一个实施例中,所述方法还包括:
获取所述历史修改代码对应的历史修改用户终端;
发送待确认信息至所述历史修改用户终端;所述待确认信息用于指示所述历史修改用户终端确认所述新的修改代码是否影响其历史修改代码的功能;
当有部分所述历史修改用户终端未返回确认信息,且所述回归测试结果为测试不通过时,返回所述新的修改代码不能更新的消息至所述第一用户终端;所述确认信息表征所述新的修改代码不影响历史修改代码的功能。
在其中一个实施例中,所述方法还包括:
当有部分所述历史修改用户终端未返回确认信息,但所述回归测试结果为测试通过时,根据所述新的修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码;
或者,当接收到所有所述历史修改用户终端返回的确认信息时,根据所述新的修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码。
第二方面,本申请还提供了一种代码处理装置。所述装置包括:
接收模块,用于接收第一用户终端提交的针对代码服务器上目标分支的修改代码;所述修改代码基于所述目标分支的第一基础代码修改得到;所述代码服务器存储有多个分支的不同版本的代码;
获取模块,用于获取所述目标分支对应的当前基础代码;
更新模块,用于在所述第一基础代码与所述当前基础代码相同的情况下,根据所述修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码,并且发送所述第二基础代码至第二用户终端,使所述第二用户终端以所述第二基础代码为修改基础,对所述目标分支进行代码修改。
在一个实施例中,所述更新模块,还用于生成所述第二基础代码对应的测试用例;根据所述测试用例,更新所述目标分支的当前测试用例表。
在一个实施例中,所述装置还包括发送模块,用于在所述第一基础代码与所述当前基础代码不同的情况下,发送提示信息至所述第一用户终端;所述提示信息用于指示所述第一用户终端从所述代码服务器获取所述当前基础代码,并以所述当前基础代码为修改基础进行代码修改,或者对所述当前基础代码和所述修改代码进行合并处理。
在一个实施例中,所述装置还包括回归测试模块,用于接收所述第一用户终端提交的新的修改代码;所述新的修改代码基于所述当前基础代码修改或合并得到;获取所述当前基础代码对应的历史修改代码的测试用例;通过所述历史修改代码的测试用例,对所述新的修改代码的功能进行回归测试,并保存回归测试结果至数据库。
在一个实施例中,所述装置还包括确认模块,用于获取所述历史修改代码对应的历史修改用户终端;发送待确认信息至所述历史修改用户终端;所述待确认信息用于指示所述历史修改用户终端确认所述新的修改代码是否影响其历史修改代码的功能;当有部分所述历史修改用户终端未返回确认信息,且所述回归测试结果为测试不通过时,返回所述新的修改代码不能更新的消息至所述第一用户终端;所述确认信息表征所述新的修改代码不影响历史修改代码的功能。
在一个实施例中,所述确认模块,还用于当有部分所述历史修改用户终端未返回确认信息,但所述回归测试结果为测试通过时,根据所述新的修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码;或者,当接收到所有所述历史修改用户终端返回的确认信息时,根据所述新的修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收第一用户终端提交的针对代码服务器上目标分支的修改代码;所述修改代码基于所述目标分支的第一基础代码修改得到;所述代码服务器存储有多个分支的不同版本的代码;
获取所述目标分支对应的当前基础代码;
在所述第一基础代码与所述当前基础代码相同的情况下,根据所述修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码,并且发送所述第二基础代码至第二用户终端,使所述第二用户终端以所述第二基础代码为修改基础,对所述目标分支进行代码修改。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收第一用户终端提交的针对代码服务器上目标分支的修改代码;所述修改代码基于所述目标分支的第一基础代码修改得到;所述代码服务器存储有多个分支的不同版本的代码;
获取所述目标分支对应的当前基础代码;
在所述第一基础代码与所述当前基础代码相同的情况下,根据所述修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码,并且发送所述第二基础代码至第二用户终端,使所述第二用户终端以所述第二基础代码为修改基础,对所述目标分支进行代码修改。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
接收第一用户终端提交的针对代码服务器上目标分支的修改代码;所述修改代码基于所述目标分支的第一基础代码修改得到;所述代码服务器存储有多个分支的不同版本的代码;
获取所述目标分支对应的当前基础代码;
在所述第一基础代码与所述当前基础代码相同的情况下,根据所述修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码,并且发送所述第二基础代码至第二用户终端,使所述第二用户终端以所述第二基础代码为修改基础,对所述目标分支进行代码修改。
上述代码处理方法、装置、计算机设备、存储介质和计算机程序产品,在第一基础代码与当前基础代码相同时,才根据修改代码更新目标分支对应的当前基础代码,避免了修改代码与当前基础代码相冲突的情况,同时将更新后的第二基础代码发送给其他正在对目标分支进行代码修改的第二用户终端,使得第二用户终端在基于第一基础代码进行代码修改的过程中,能够感知到目标分支上代码版本的更新,提醒第二用户终端基于最新的分支代码进行修改,降低代码冲突机率,从而减少后续的冲突合并时造成的时间和人力的浪费。
附图说明
图1为一个实施例中代码处理方法的应用环境图;
图2为一个实施例中代码处理方法的流程示意图;
图3为一个实施例中回归测试步骤的流程示意图;
图4为一个实施例中代码处理方法的完整流程示意图;
图5为一个实施例中代码处理装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
本申请实施例提供的代码处理方法,可以应用于如图1所示的应用环境中。其中,第一用户终端102通过网络与代码服务器104进行通信。第二用户终端106通过网络与代码服务器104进行通信。数据存储***可以存储代码服务器104需要处理的数据。数据存储***可以集成在代码服务器104上,也可以放在云上或其他网络服务器上。在本申请的应用场景中,代码服务器104上存储有多个分支的不同版本的公共代码,当第一用户终端102需要对目标分支的公共代码进行修改时,从代码服务器104上拉取目标分支上的第一基础代码(即拉取时的最新公共代码)并对其进行修改,得到修改代码并将修改代码发送给代码服务器104,代码服务器104接收到第一用户终端102发送的针对目标分支的修改代码后,获取目标分支对应的当前基础代码(即当前的最新公共代码),并比较修改代码依据的第一基础代码与当前基础代码是否相同,在两者相同的情况下,根据修改代码更新目标分支对应的当前基础代码,得到第二基础代码,并且发送第二基础代码至第二用户终端106,使第二用户终端106以第二基础代码为修改基础,对目标分支进行代码修改,减低代码冲突机会。
其中,第一用户终端102和第二用户终端106可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。代码服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种代码处理方法,以该方法应用于图1中的代码服务器104为例进行说明,包括以下步骤:
步骤S210,接收第一用户终端提交的针对代码服务器上目标分支的修改代码;修改代码基于目标分支的第一基础代码修改得到;代码服务器存储有多个分支的不同版本的代码。
其中,第一基础代码可以理解为第一用户终端从代码服务器上拉取目标分支的代码时,目标分支对应的多个版本的代码中最新版本的代码。
其中,目标分支可表示代码服务器上存储的多个分支中的任意一个分支。
具体实现中,当第一用户终端102的用户需要对代码服务器104上目标分支的公共代码进行修改时,可以从代码服务器104上拉取目标分支上的第一基础代码(即拉取时的最新公共代码),以第一基础代码为修改基础进行修改,得到修改代码,并将修改代码发送给代码服务器104,使代码服务器104接收第一用户终端102发送的针对目标分支的修改代码,并进一步判断该修改代码是否可更新到代码服务器104上。
步骤S220,获取目标分支对应的当前基础代码。
其中,当前基础代码可以理解为代码服务器接收到第一用户终端提交的修改代码后,目标分支对应的多个版本的代码中最新版本的代码。
具体实现中,由于第一用户终端102在基于第一基础代码进行修改的过程中,可能有其他用户也基于第一基础代码对目标分支进行了代码修改,并且先于第一用户终端102,将修改代码提交给代码服务器104,这种情况下,第一用户终端102提交的修改代码将不能直接更新到代码服务器104上。因此,代码服务器104在接收到第一用户终端提交的针对目标分支的修改代码后,为了判断该修改代码是否可以更新到代码服务器104上,还需要获取代码服务器104上存储的目标分支对应的当前最新版本的代码,作为当前基础代码。
步骤S230,在第一基础代码与当前基础代码相同的情况下,根据修改代码更新目标分支对应的当前基础代码,得到第二基础代码,并且发送第二基础代码至第二用户终端,使第二用户终端以第二基础代码为修改基础,对目标分支进行代码修改。
其中,第二用户终端可表示对目标分支的公用代码进行修改的其他用户终端。
具体实现中,代码服务器104在接收到第一用户终端102发送的修改代码并获取目标分支的当前基础代码后,可将修改代码修改时所依据的第一基础代码与当前基础代码进行比对,判断两者是否相同,若相同,即第一用户终端102发送的修改代码修改时所依据的第一基础代码属于目标分支上最新的代码,确认不存在代码冲突的问题,则可进一步根据所述修改代码更新所述目标分支对应的所述当前基础代码。
更具体地,在根据所述修改代码更新所述目标分支对应的所述当前基础代码之前,还可对修改代码进行测试,在测试通过时,根据修改代码更新目标分支对应的当前基础代码,得到第二基础代码。其中,根据修改代码更新目标分支对应的当前基础代码的方式可以为:将修改代码添加为目标分支对应的新的基础代码,记为第二基础代码,将目标分支对应的当前基础代码作为历史基础代码进行存储。
此外,在对目标分支对应的当前基础代码进行更新后,同时还可获取正在对目标分支进行代码修改的第二用户终端的终端信息,以根据该终端信息发送第二基础代码至第二用户终端,使第二用户终端的用户可同步基于目标分支最新的基础代码进行代码修改,以降低代码冲突机会。
可以理解的是,当正在对目标分支进行代码修改的用户终端有多个时,还可获取第三用户终端、第四用户终端等的终端信息,将第二基础代码同时发送给第三用户终端、第四用户终端等,使三用户终端、第四用户终端等终端都可以基于最新的基础代码进行代码修改。
上述代码处理方法中,第一用户终端提交针对代码服务器上目标分支的修改代码至代码服务器后,触发代码服务器获取目标分支对应的当前基础代码,并比较修改代码依据的第一基础代码与当前基础代码的一致性,在两者相同的情况下,根据修改代码更新目标分支对应的当前基础代码,得到第二基础代码,同时发送第二基础代码至第二用户终端,使第二用户终端以第二基础代码为修改基础,对目标分支进行代码修改。该方法在第一基础代码与当前基础代码相同时,才根据修改代码更新目标分支对应的当前基础代码,避免了修改代码与当前基础代码相冲突的情况,同时将更新后的第二基础代码发送给其他正在对目标分支进行代码修改的第二用户终端,使得第二用户终端在基于第一基础代码进行代码修改的过程中,能够感知到目标分支上代码版本的更新,提醒第二用户终端基于最新的分支代码进行修改,降低代码冲突机率,从而减少后续的冲突合并时造成的时间和人力的浪费。
在一示例性实施例中,在步骤S230根据修改代码更新目标分支对应的当前基础代码,得到第二基础代码之后,还包括:
步骤S240,生成第二基础代码对应的测试用例;
步骤S250,根据测试用例,更新目标分支的当前测试用例表。
具体实现中,不同版本的代码对应的功能也会不相同,因此,不同版本的代码对应有不同的测试用例,故而在得到目标分支新版本的第二基础代码后,需要生成第二基础代码对应的测试用例,并根据该测试用例,更新目标分支的当前测试用例表。更具体地,根据该测试用例,更新目标分支的当前测试用例表的实现方式可以为:将第二基础代码对应的测试用例添加至目标分支的当前测试用例表,得到更新后的测试用例表。
本实施例中,在得到第二基础代码后,通过生成第二基础代码对应的测试用例,并根据该测试用例更新目标分支的当前测试用例表,实现在对目标分支进行代码版本更新后,测试用例表的同步更新,便于后续基于第二基础代码修改得到第三基础代码后,基于更新后的测试用例表对第三基础代码进行回归测试。
在一示例性实施例中,上述方法还包括:在第一基础代码与当前基础代码不同的情况下,发送提示信息至第一用户终端;提示信息用于指示第一用户终端从代码服务器获取当前基础代码,并以当前基础代码为修改基础进行代码修改,或者对当前基础代码和修改代码进行合并处理。
具体实现中,代码服务器104在将第一基础代码与当前基础代码进行比对后,若得到的比对结果为两者不同,即第一用户终端102发送的修改代码所依据的第一基础代码并非目标分支上最新版本的代码,确认存在代码冲突的问题,因此,可发送提示信息给第一用户终端102,指示第一用户终端需要重新获取目标分支上的最新的当前基础代码,以当前基础代码为修改基础重新进行代码修改,或者对当前基础代码和修改代码进行合并处理。
本实施例中,在第一基础代码与当前基础代码不同时,发送提示信息至第一用户终端,以提示第一用户终端获取当前基础代码重新进行代码修改或进行代码合并,使得第一用户终端可及时进行代码修改,避免提交到代码服务器后,再进行冲突处理消耗更多的时间。
在一示例性实施例中,如图3所示,在发送提示信息至第一用户终端之后,还包括:
步骤S310,接收第一用户终端提交的新的修改代码;新的修改代码基于当前基础代码修改或合并得到;
步骤S320,获取当前基础代码对应的历史修改代码的测试用例;
步骤S330,通过历史修改代码对应的测试用例,对新的修改代码的功能进行回归测试,并保存回归测试结果至数据库。
其中,测试用例用于对代码的功能进行回归测试。
其中,回归测试表示修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
具体实现中,第一用户终端在接收到代码服务器发送的提示信息后,可根据提示信息从代码服务器获取目标分支的当前基础代码,以当前基础代码未修改基础重新进行代码修改,得到新的修改代码,或者将当前基础代码与修改代码进行合并处理,得到新的修改代码。在此过程中,由于第一用户终端不清楚当前基础代码中其他用户终端的修改内容,继而在基于当前基础代码进行修改或合并时,可能会出现将当前基础代码的部分功能替换或删除等合并偏差的情况,因此,代码服务器在接收到第一用户终端提交的新的修改代码后,还需要获取代码版本在当前基础代码之前的历史修改代码的测试用例,通过历史修改代码的测试用例对新的修改代码的功能进行回归测试,以判断新的修改代码是否导致历史修改代码的功能出错,并将回归测试结果保存至数据库。
本实施例中,在接收第一用户终端提交的新的修改代码后,通过获取当前基础代码对应的历史修改代码的测试用例,并通过测试用例自动对新的修改代码的功能进行回归测试,可以极大地节省代码冲突合并时的沟通成本,提高代码质量。
在一示例性实施例中,上述方法还包括:
获取历史修改代码对应的历史修改用户终端;
发送待确认信息至历史修改用户终端;待确认信息用于指示历史修改用户终端确认新的修改代码是否影响其历史修改代码的功能;
当有部分历史修改用户终端未返回确认信息,且回归测试结果为测试不通过时,返回新的修改代码不能更新的消息至第一用户终端;确认信息表征新的修改代码不影响历史修改代码的功能。
其中,待确认信息中可包含新的修改代码。
具体实现中,代码服务器在接收到第一用户终端提交的新的修改代码后,除了获取修改代码修改所依据的当前基础代码对应的历史修改代码的测试用例外,还可获取历史修改代码对应的历史修改用户终端,以便于发送待确认信息至历史修改用户终端,使历史修改用户终端确认新的修改代码是否影响其历史修改代码的功能,并返回确认信息至代码服务器。若有部分历史修改用户终端未返回确认信息,并且对新的修改代码的回归测试不通过时,表明新的修改代码可能存在错误,因此,可返回新的修改代码不能更新的消息至第一用户终端。
实际应用中,可以通过邮件、短信息、即时通信软件等方式发送待确认信息至历史修改用户终端,待确认信息可以以链接的形式展示,历史修改用户终端接收待确认信息后,通过点击链接进行确认信息。
在一示例性实施例中,还包括:当有部分历史修改用户终端未返回确认信息,但回归测试结果为测试通过时,根据新的修改代码更新目标分支对应的当前基础代码,得到第二基础代码;或者,当接收到所有历史修改用户终端返回的确认信息时,根据新的修改代码更新目标分支对应的当前基础代码,得到第二基础代码。
具体实现中,若有部分历史修改用户终端未返回确认信息,当对新的修改代码的回归测试通过时,或者,当接收到所有历史修改用户终端返回的确认信息时,表明新的修改代码不存在问题,因此,可根据新的修改代码更新目标分支对应的当前基础代码,得到第二基础代码。
上述实施例中,代码服务器在接收到第一用户终端提交的新的修改代码后,还获取历史修改代码对应的历史修改用户终端,从而可发送待确认信息至历史修改用户终端,使历史修改用户终端确认新的修改代码是否影响其历史修改代码的功能,在对新的修改代码进行回归测试的基础上,结合历史修改用户终端的答复信息,共同确认新的修改代码的有效性,可以提高更新至代码服务器上的代码的质量。
在一个实施例中,为了便于本领域技术人员理解本申请实施例,以下将结合附图的具体示例进行说明。参考图4,示出了一种代码处理方法的完整流程示意图,包括以下步骤:
(1)用户A获取Git代码服务器上目标分支的代码,拉取分支上最新公共代码(即第一基础代码)到本地,记该代码版本为A0,(此时代码服务器目标分支上的最新代码版本为A0),用户A本地保留代码基础副本为A0。
(2)用户B同时获取Git代码服务器上目标分支的代码,拉取分支上最新公共代码到本地,分支代码版本也为A0。
(3)用户A和用户B分别基于代码版本A0进行代码修改,以用户A为例,通过对本地分支代码版本A0拷贝一份进行修改,修改后的代码版本记为A1,其中,本地保留修改基础版本A0的目的是可以在后续比较用户A修改的基础版本是否和目标分支上最新代码版本一致。
(4)用户A提交代码版本A1到代码服务器时,触发代码服务器的分析模块比较代码版本A1的修改基础版本A0是否与目标分支上最新的当前基础代码的版本A0’一致。
(5)如果一致,则调用测试用例模块对代码版本A1的代码进行测试,测试通过后,则更新代码服务器目标分支上的当前代码版本为A1,并生成该代码版本A1对应的测试用例,根据代码版本A1对应的测试用例更新目标分支对应的测试用例表。
同时,将目标分支上的代码版本A1自动推送给其他代码拉取人,例如将代码版本A1推送到用户B,提示其使用目标分支上最新的代码版本A1进行代码修改。并且如果用户B使用了最新的代码版本A1进行修改,则其修改的基础版本更新为代码版本A1,目的是同步各代码修改人的代码,及早在本地进行代码合并,无需等到提交到代码服务器时再合并。
(6)如果比较代码版本A1的修改基础版本A0与目标分支上最新的当前基础代码的版本A0’不一致,则提示存在代码冲突,用户A需要重新下载目标分支上的当前代码版本A0’到本地,重新进行代码修改,或者走冲突合并模块,进行代码合并,得到新的修改代码A2,提交新的修改代码A2至代码服务器,触发分支代码版本A0’的回归测试(其中,分支代码版本A0’对应的历史修改版本的测试用例都进行回归测试)。
该步骤是为了通过代码名称得到受影响的功能模块,一个代码文件某个版本可能和***多个功能相关,对应关系为“文件版本:影响功能”,例如:
代码版本A0:功能A
代码版本A1:功能A、功能B、功能C
功能A:测试用例A
功能B:测试用例B
功能C:测试用例C
代码版本A0:测试用例A
代码版本A1:测试用例A、测试用例B、测试用例C。
(7)代码服务器的分析模块分析历史修改代码版本得到需要执行回归测试的测试用例列表,实现自动查找历史修改代码版本对应的自动化测试用例。其中,历史修改代码版本的测试用例自动化回归测试通过用户A提交新的修改代码A2到目标分支代码库的动作来触发。
(8)对新的修改代码A2的功能执行对应的自动化回归测试,得到回归测试结果,脚本工具标记测试用例是否通过,并保留在数据库以作下一步使用。
(9)同时用户A提交新的修改代码A2到目标分支代码库后,代码服务器会通知目标分支上针对新的修改代码A2的历史修改人,代码修改人收到邮件需要点链接确认。
(10)如果全部历史修改人均返回确认信息,或者部分历史修改人没有返回确认信息但回归测试用例的测试通过,则将新的修改代码A2更新到目标分支代码库;如果部分历史修改人没有返回确认信息且回归测试用例的测试不通过,则新的修改代码A2不能更新至目标分支代码库。
本实施例提供的基于多方验证同步策略解决公用代码提交冲突的方法,使用Git代码库结合jenkins技术进行多方验证回归验证,确保涉及多方的修改内容验证通过,具有以下有益效果:1.快速确定公共代码多方作者:原来代码提交人不清楚其他人的修改内容,在做冲突合并时候容易出现偏差,现在***能自动定位涉及的修改人,找到对应代码版本的自动测试用例,并发邮件通知相关修改人进行确认。2.一方修改提交的公共代码更新分支后自动同步到正在修改代码的本机,提醒正在修改的修改人注意,减少冲突可能;原来拉取代码后,代码修改人基于原代码副本在修改过程中不能感知到分支上代码版本的更新,现在改进后,分支更新代码会推送到本地,让代码修改人同步基于最新的分支代码进行更新代码,减低冲突机会。3.自动验证:对于公共模块提交冲突,之前冲突修改后,无论是***自动合并还是人工合并后提交,都不能百分百准确和确认,该方法通过调用代码测试案例进行回归验证并结合邮件人工确认,大大节省代码冲突合并沟通成本,提高代码质量。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的代码处理方法的代码处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个代码处理装置实施例中的具体限定可以参见上文中对于代码处理方法的限定,在此不再赘述。
在一个实施例中,如图5所示,提供了一种代码处理装置,包括:接收模块510、获取模块520和更新模块530,其中:
接收模块510,用于接收第一用户终端提交的针对代码服务器上目标分支的修改代码;修改代码基于目标分支的第一基础代码修改得到;代码服务器存储有多个分支的不同版本的代码;
获取模块520,用于获取目标分支对应的当前基础代码;
更新模块530,用于在第一基础代码与当前基础代码相同的情况下,根据修改代码更新目标分支对应的当前基础代码,得到第二基础代码,并且发送第二基础代码至第二用户终端,使第二用户终端以第二基础代码为修改基础,对目标分支进行代码修改。
在一个实施例中,上述更新模块530,还用于生成第二基础代码对应的测试用例;根据测试用例,更新目标分支的当前测试用例表。
在一个实施例中,上述装置还包括发送模块,用于在第一基础代码与当前基础代码不同的情况下,发送提示信息至第一用户终端;提示信息用于指示第一用户终端从代码服务器获取当前基础代码,并以当前基础代码为修改基础进行代码修改,或者对当前基础代码和修改代码进行合并处理。
在一个实施例中,上述装置还包括回归测试模块,用于接收第一用户终端提交的新的修改代码;新的修改代码基于当前基础代码修改或合并得到;获取当前基础代码对应的历史修改代码的测试用例;通过历史修改代码的测试用例,对新的修改代码的功能进行回归测试,并保存回归测试结果至数据库。
在一个实施例中,上述装置还包括确认模块,用于获取历史修改代码对应的历史修改用户终端;发送待确认信息至历史修改用户终端;待确认信息用于指示历史修改用户终端确认新的修改代码是否影响其历史修改代码的功能;当有部分历史修改用户终端未返回确认信息,且回归测试结果为测试不通过时,返回新的修改代码不能更新的消息至第一用户终端;确认信息表征新的修改代码不影响历史修改代码的功能。
在一个实施例中,上述确认模块,还用于当有部分历史修改用户终端未返回确认信息,但回归测试结果为测试通过时,根据新的修改代码更新目标分支对应的当前基础代码,得到第二基础代码;或者,当接收到所有历史修改用户终端返回的确认信息时,根据新的修改代码更新目标分支对应的当前基础代码,得到第二基础代码。
上述代码处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过***总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储代码处理过程中的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码处理方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种代码处理方法,其特征在于,所述方法包括:
接收第一用户终端提交的针对代码服务器上目标分支的修改代码;所述修改代码基于所述目标分支的第一基础代码修改得到;所述代码服务器存储有多个分支的不同版本的代码;
获取所述目标分支对应的当前基础代码;
在所述第一基础代码与所述当前基础代码相同的情况下,根据所述修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码,并且发送所述第二基础代码至第二用户终端,使所述第二用户终端以所述第二基础代码为修改基础,对所述目标分支进行代码修改。
2.根据权利要求1所述的方法,其特征在于,在所述根据所述修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码之后,还包括:
生成所述第二基础代码对应的测试用例;
根据所述测试用例,更新所述目标分支的当前测试用例表。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一基础代码与所述当前基础代码不同的情况下,发送提示信息至所述第一用户终端;
所述提示信息用于指示所述第一用户终端从所述代码服务器获取所述当前基础代码,并以所述当前基础代码为修改基础进行代码修改,或者对所述当前基础代码和所述修改代码进行合并处理。
4.根据权利要求3所述的方法,其特征在于,在所述发送提示信息至所述第一用户终端之后,还包括:
接收所述第一用户终端提交的新的修改代码;所述新的修改代码基于所述当前基础代码修改或合并得到;
获取所述当前基础代码对应的历史修改代码的测试用例;
通过所述历史修改代码的测试用例,对所述新的修改代码的功能进行回归测试,并保存回归测试结果至数据库。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取所述历史修改代码对应的历史修改用户终端;
发送待确认信息至所述历史修改用户终端;所述待确认信息用于指示所述历史修改用户终端确认所述新的修改代码是否影响其历史修改代码的功能;
当有部分所述历史修改用户终端未返回确认信息,且所述回归测试结果为测试不通过时,返回所述新的修改代码不能更新的消息至所述第一用户终端;所述确认信息表征所述新的修改代码不影响历史修改代码的功能。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
当有部分所述历史修改用户终端未返回确认信息,但所述回归测试结果为测试通过时,根据所述新的修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码;
或者,当接收到所有所述历史修改用户终端返回的确认信息时,根据所述新的修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码。
7.一种代码处理装置,其特征在于,所述装置包括:
接收模块,用于接收第一用户终端提交的针对代码服务器上目标分支的修改代码;所述修改代码基于所述目标分支的第一基础代码修改得到;所述代码服务器存储有多个分支的不同版本的代码;
获取模块,用于获取所述目标分支对应的当前基础代码;
更新模块,用于在所述第一基础代码与所述当前基础代码相同的情况下,根据所述修改代码更新所述目标分支对应的所述当前基础代码,得到第二基础代码,并且发送所述第二基础代码至第二用户终端,使所述第二用户终端以所述第二基础代码为修改基础,对所述目标分支进行代码修改。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210237357.6A CN114579171A (zh) | 2022-03-10 | 2022-03-10 | 代码处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210237357.6A CN114579171A (zh) | 2022-03-10 | 2022-03-10 | 代码处理方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114579171A true CN114579171A (zh) | 2022-06-03 |
Family
ID=81774596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210237357.6A Pending CN114579171A (zh) | 2022-03-10 | 2022-03-10 | 代码处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579171A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023241678A1 (zh) * | 2022-06-17 | 2023-12-21 | 华为云计算技术有限公司 | 一种基于云服务的微服务版本管理方法及云管理平台 |
-
2022
- 2022-03-10 CN CN202210237357.6A patent/CN114579171A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023241678A1 (zh) * | 2022-06-17 | 2023-12-21 | 华为云计算技术有限公司 | 一种基于云服务的微服务版本管理方法及云管理平台 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019056540A1 (zh) | 测试用例自动化管理方法、装置、设备及存储介质 | |
CN110955432B (zh) | 持续集成的发布方法、装置及*** | |
CN109408262B (zh) | 一种业务数据处理方法及相关设备 | |
CN113448862B (zh) | 软件版本测试方法、装置及计算机设备 | |
CN111984239A (zh) | 一种页面配置方法、装置、服务器及存储介质 | |
CN114780138B (zh) | 流场模拟软件代码版本管理方法、装置和存储介质 | |
CN112256318A (zh) | 一种用于依赖产品的构建方法及设备 | |
CN114579171A (zh) | 代码处理方法、装置、计算机设备和存储介质 | |
US7478118B2 (en) | Method and apparatus for synchronizing of databases connected by wireless interface | |
CN110263305B (zh) | 配置文件对比方法、装置、设备及存储介质 | |
CN115982279A (zh) | 数据同步方法、装置、***和计算机设备 | |
CN116048609A (zh) | 配置文件更新方法、装置、计算机设备和存储介质 | |
CN115408049A (zh) | 文件版本控制方法、装置和电子设备 | |
CN111949731A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN114595159B (zh) | 测试数据生成方法、装置、设备及存储介质 | |
CN116680203B (zh) | 面向多租户的SaaS平台的测试方法、装置、设备和介质 | |
CN112950138B (zh) | 协同开发的状态管理方法、装置和服务器 | |
CN110728584B (zh) | 信息处理方法及装置、可读存储介质和电子设备 | |
CN116483849A (zh) | 一种sql文件更新方法、装置和电子设备 | |
CN114185591A (zh) | 代码检查方法、装置、存储介质和计算机程序产品 | |
CN116595954A (zh) | 条目编辑的方法、装置、设备和存储介质 | |
CN117520299A (zh) | 金融***迁移时的数据处理方法、装置、设备及介质 | |
CN117667648A (zh) | 代码分支的合线检测方法、装置、计算机设备和存储介质 | |
CN117971845A (zh) | 用于管理数据变更脚本的方法、程序、设备及存储介质 | |
CN114416170A (zh) | 版本管理方法、装置、设备、存储介质和程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |