CN105404519A - 一种版本控制方法、代码测试方法及系统 - Google Patents
一种版本控制方法、代码测试方法及系统 Download PDFInfo
- Publication number
- CN105404519A CN105404519A CN201510897634.6A CN201510897634A CN105404519A CN 105404519 A CN105404519 A CN 105404519A CN 201510897634 A CN201510897634 A CN 201510897634A CN 105404519 A CN105404519 A CN 105404519A
- Authority
- CN
- China
- Prior art keywords
- code
- branch
- incremental
- version control
- control system
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明的实施例提供一种版本控制方法、代码测试方法及系统,涉及软件开发技术领域,能够及时发现新提交的代码中的错误,提高全量静态代码测试的成功率,缩短软件产品的开发周期。具体方案为:版本控制系统接收增量代码;创建临时分支,并将所述增量代码存入临时代码库中;其中,所述临时分支为正式分支的从属分支,所述正式分支的代码存储于正式代码库中;向持续集成系统发送所述临时分支的代码以及增量标识;接收所述持续集成系统发送的第一反馈消息,所述第一反馈消息用于指示所述临时分支的代码已通过增量静态代码测试以及增量构建测试;将所述增量代码合并入正式分支的代码。本发明用于软件开发。
Description
技术领域
本发明涉及软件开发技术领域,尤其涉及一种版本控制方法、代码测试方法及系统。
背景技术
在软件产品的开发过程中,开发人员通过本地开发系统向版本控制(英文全称:Revisioncontrol)系统提交某个新建分支(英文全称:Branch)的代码或者对已有分支进行部分或者全部更新后的代码。版本控制系统通过多个本地开发系统接收开发团队各个成员向不同分支提交的代码,将多个分支的代码合并(英文全称:merge)到代码库进行统一管理。持续集成(英文全称:Continuousintegration)系统对版本控制系统代码库中的代码进行全量静态代码测试,当确定合并后的代码测试无误时,再进行软件集成构建,包括编译、自动化测试、发布等。
当代码库中的一个分支或者多个分支的代码出现错误,导致全量静态代码测试失败时,开发人员根据测试结果对出错分支的代码进行修改,向版本控制系统提交对某个分支的更新的代码,版本控制系统将新提交的代码合并到代码库,然后持续集成系统再次进行全量静态代码测试。
在开发团队成员多、软件规模大的情况下,全量静态代码测试通常比较耗时,因此代码错误的反馈周期长。另外,在发现代码错误后,开发人员提交的修改后代码,可能引入新的错误,而现有的代码测试方法不能及时发现这些错误,还会导致下一次的全量静态代码测试的失败,因此测试成功率低。如果经过多次全量静态代码测试仍旧出现代码错误,往往影响软件产品的开发进度,导致软件产品开发周期长。
发明内容
本申请提供一种版本控制方法、代码测试方法及系统,能够及时发现新提交的代码中的错误,提高全量静态代码测试的成功率,缩短软件产品的开发周期。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种软件开发系统,包括本地开发系统、版本控制系统以及持续集成系统;
其中,所述本地开发系统,用于向所述版本控制系统发送增量代码,所述增量代码为所述本地开发系统向所述版本控制系统新提交的代码;
所述版本控制系统用于创建临时分支,并将所述增量代码存入临时代码库中;其中,所述临时分支为正式分支的从属分支,所述正式分支的代码存储于正式代码库中;
所述版本控制系统,还用于向所述持续集成系统发送所述临时分支的代码以及增量标识;其中,所述临时分支的代码包括所述正式分支的代码以及所述增量代码,所述增量标识用于标识所述增量代码;
所述持续集成系统,用于根据所述增量标识,从所述临时分支的代码中获取所述增量代码,对所述增量代码进行静态代码测试以及构建测试;当所述增量代码通过静态代码测试以及构建测试时,向所述版本控制系统发送第一反馈消息;所述第一反馈消息用于指示所述临时分支的代码已通过增量静态代码测试以及增量构建测试;
所述版本控制系统,还用于将所述增量代码合并入正式分支的代码。
第二方面,提供一种版本控制方法,应用于版本控制系统,所述版本控制方法包括:
接收增量代码,所述增量代码为本地开发系统向所述版本控制系统新提交的代码;
创建临时分支,并将所述增量代码存入临时代码库中;其中,所述临时分支为正式分支的从属分支,所述正式分支的代码存储于正式代码库中;
向持续集成系统发送所述临时分支的代码以及增量标识;其中,所述临时分支的代码包括所述正式分支的代码以及所述增量代码,所述增量标识用于标识所述增量代码;
接收所述持续集成系统发送的第一反馈消息,所述第一反馈消息用于指示所述临时分支的代码已通过增量静态代码测试以及增量构建测试;
将所述增量代码合并入所述正式分支的代码。
第三方面,提供一种代码测试方法,应用于持续集成系统,其特征在于,所述代码测试方法包括:
接收版本控制系统发送的临时分支的代码以及增量标识;其中,所述临时分支为正式分支的从属分支,所述临时分支的代码包括所述正式分支的代码以及增量代码,所述正式分支的代码存储于所述版本控制系统的正式代码库中,所述增量代码为本地开发系统向所述版本控制系统新提交的代码,所述增量代码储于版本控制系统的临时代码库中,所述增量标识用于标识所述增量代码;
根据所述增量标识,从所述临时分支的代码中获取所述增量代码;
对所述增量代码进行静态代码测试以及构建测试;
当所述增量代码通过静态代码测试以及构建测试时,向所述版本控制系统发送第一反馈消息,以便于所述版本控制系统将所述增量代码合并入所述正式分支的代码;其中,所述第一反馈消息用于指示所述临时分支的代码已通过增量静态代码测试以及增量构建测试。
本发明的实施例所提供的软件开发系统、版本控制方法以及代码测试方法,当本地开发系统提交增量代码时,版本控制系统首先将增量代码存入临时代码库,由持续集成系统对临时分支的代码进行增量静态代码测试以及增量构建测试,即对增量代码进行静态代码测试以及构建测试,通过测试后版本控制系统将增量代码合入正式代码库,与正式分支的代码合并。增量代码通过测试后才存入正式代码库,因此对正式代码库进行全量静态代码测试的成功率大大提高,从而减少了多次全量静态代码测试所耗用的时间,缩短了软件产品的开发周期。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的实施例所提供的软件开发系统的示意图;
图2-1为本发明的实施例所提供的版本控制方法以及代码测试方法的流程示意图;
图2-2为本发明的实施例中持续集成系统进行测试以及反馈测试结果的流程示意图;
图3为本发明的实施例中正式分支的代码以及临时分支的代码的说明示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
参照图1所示,本发明的实施例提供一种软件开发系统10。软件开发系统10包括本地开发系统101、版本控制系统102以及持续集成系统103。本地开发系统101可以向软件开发团队提供多个开发界面1011,开发团队内的多个开发人员可以通过各自的开发界面1011向版本控制系统102提交新的代码。
本发明的实施例中,版本控制系统102包括正式代码库1022和临时代码库1021。正式代码库1022用于存储正式分支的代码。临时代码库1021用于存储本地开发系统101向版本控制系统102新提交的代码。当开发人员通过向本地开发系统101向版本控制系统102提交新的代码时,新提交的代码首先被存入临时代码库1021,在持续集成系统103对新提交的代码测试通过后,再将新提交的代码存入正式代码库1022,与存储于正式代码库1022内的正式分支的代码合并。具体方案如下:
本地开发系统101,用于向版本控制系统102发送增量代码,增量代码为本地开发系统101向版本控制系统102新提交的代码。具体的,开发人员可以通过多个开发界面1011中的任一个开发界面1011提交增量代码。
版本控制系统102用于创建临时分支,并将增量代码存入临时代码库1021中。其中,临时分支为正式分支的从属分支,正式分支的代码存储于正式代码库1022中。
版本控制系统102,还用于向持续集成系统103发送临时分支的代码以及增量标识。其中,临时分支的代码包括正式分支的代码以及增量代码,增量标识用于标识增量代码。
持续集成系统103,用于根据增量标识,从临时分支的代码中获取增量代码,对增量代码进行静态代码测试以及构建测试。当增量代码通过静态代码测试以及构建测试时,向版本控制系统102发送第一反馈消息。第一反馈消息用于指示临时分支的代码已通过增量静态代码测试以及增量构建测试。
版本控制系统102,还用于将增量代码合并入正式分支的代码。
可选的,版本控制系统102,还用于向持续集成系统103发送代码提交指示消息,代码提交指示消息包括分支标识,分支标识用于标识临时分支。
持续集成系统103,还用于向版本控制系统102发送下载请求消息,下载请求消息用于请求下载临时分支的代码以及增量标识。
可选的,持续集成系统103,还用于当临时分支的代码未通过增量静态代码测试或者增量构建测试时,向版本控制系统102发送第二反馈消息,第二反馈消息用于指示临时分支的代码未通过增量静态代码测试或者增量构建测试。
本发明的实施例所提供的软件开发系统,当本地开发系统提交增量代码时,将增量代码存入临时代码库,由持续集成系统对临时分支的代码进行增量静态代码测试以及增量构建测试,即对增量代码进行静态代码测试以及构建测试,通过测试后版本控制系统将增量代码合入正式代码库,与正式分支的代码合并。如果未通过测试则向开发人员反馈,以便开发人员进行修改。由于只对正式分支的代码的增量进行测试,测试时间短,反馈及时,开发人员可以方便地进行多次测试。增量代码通过测试后才存入正式代码库,因此对正式代码库进行全量静态代码测试的成功率大大提高,从而减少了多次全量静态代码测试所耗用的时间,缩短了软件产品的开发周期。
结合图1所示的软件开发系统,对本发明所提供的版本控制方法以及代码测试方法进行统一说明。其中,版本控制系统用于执行本发明所提供的版本控制方法,持续集成系统用于执行本发明所提供的代码测试方法。参照图2-1所示,具体步骤如下:
201、版本控制系统从本地开发系统接收增量代码,创建临时分支,并将所述增量代码存入临时代码库中。
增量代码为本地开发系统向所述版本控制系统新提交的代码。
版本控制系统包括临时代码库和正式代码库。其中,临时代码库用于存储增量代码,正式代码库用于存储正式分支的代码。正式分支的代码为用于软件产品发布的代码。增量代码具体可以是C或者C++或者其它语言编写的代码文件。这些代码文件包括对正式分支所做的修改,具体可以是对操作系统(如果有)、应用程序、硬件配置等的修改。例如软件产品具体为智能电视的系统更新软件,该更新软件包括了电视机的操作系统,还可以包括嵌入的应用程序,或者还包括对各种配置参数所做的更新等等,例如对音频参数、画质参数以及显示参数等所做的修改。
通常,在软件开发过程中需要建立多个分支,结合图3,本发明的实施例以正式分支和临时分支数量均为1的情况为例进行说明。图3中Y轴为时间轴,随着时间变化,正式分支的代码可能会有更新,在创建临时分支的时间点,正式分支的代码包括该时间点已经存储与正式代码库中的最新代码。图3中用S1、S2字样表示正式分支的代码,T1表示增量代码。在t1时刻,正式分支的代码包括S1。在t2时刻,正式分支的代码包括S1和S2。
版本控制系统接收到增量代码之后,创建临时分支,临时分支为基于正式分支所创建的从属分支。临时分支的代码包括创建临时分支时正式分支的代码和增量代码。结合图3所示,在创建临时分支的时间点,正式分支的代码包括S1、S2和S3,则临时分支的代码包括S1、S2、S3以及T1。
通常,临时分支的代码在经过测试前,只用于开发人员进行开发阶段的调试修改等。版本控制系统首先将增量代码存入临时代码库中,当增量代码通过持续集成系统的静态代码测试和构建测试后,版本控制系统再将其合入正式代码库,与正式代码库中正式分支的代码合并,具体过程将在后续步骤进行说明。
202、版本控制系统向持续集成系统发送代码提交指示消息。
版本控制系统接收到增量代码后,向持续集成系统发送代码提交指示消息,通知持续集成系统有新的代码,即增量代码提交。代码提交指示消息包括分支标识,分支标识用于标识临时分支,持续集成系统根据分支标识确定开发人员请求将增量代码向临时分支提交。可选的,分指标识具体可以是增量代码的补丁(英文全称:patch)号,持续集成系统根据补丁号即可确定增量代码所属的分支,即临时分支。
203、持续集成系统向版本控制系统发送下载请求消息。
下载请求消息用于向版本控制系统请求获取临时分支的代码以及增量标识。
其中,增量标识用于标识增量代码。增量标识具体可以是增量代码的补丁(英文全称:patch)号、小版本号等用于标识增量代码属性的信息,以版本控制系统为Git系统的情况为例,开发人员提交本地增量代码(的文件)到临时分支时,Git的review工具gerrit顺序分配一个patch号以及小版本号。Git系统通过patch号以及小版本号标识新提交的增量代码。Git系统根据patch号以及小版本号从临时分支的代码中确定哪些代码(的文件)是新提交的增量代码(的文件)。
例如,开发人员提交增量代码到refs临时分支时,review工具为增量代码分配的patch号为33016,小版本号为1。开发人员本次提交增量代码在正式仓库中的存储路径如下:
~/review_site/git/MT5657.git/refs/changes/16/33016$,
该路径所指示的名称为33016文件夹中,包括的名称为1的文件夹,该文件夹内的文件即为本次提交的增量代码(的文件)。
204、版本控制系统向持续集成系统发送临时分支的代码以及增量标识。
临时分支的代码包括创建临时分支时正式分支的代码和增量代码,版本控制系统向持续集成系统发送临时分支的代码时,对于正式分支的代码和增量代码不做区分,而是将两者一并发送至持续集成系统,由持续集成系统根据增量标识从临时分支的代码中确定哪些代码是增量代码。
205、持续集成系统根据增量标识,从临时分支的代码中获取增量代码。
持续集成系统接收到版本控制系统发送的临时分支的代码后,根据增量标识从临时分支的代码中确定哪些代码是新提交的增量代码。
结合步骤203,Git系统中,当增量标识是增量代码的patch号和小版本号时,持续集成系统通过gitlog-1–name-status指令得到增量代码的详细信息,示例性地,详细信息包括以下信息或者与之类似的信息:
commit997310d159028866afac9802cb3391dd6c42d6a
Author:author_name×××.com
Date:FriNov1304:08:182015-0500
Fornewfeature:debugging
Mvm_linux/project_x/custom/dev/app_util/mtkrpcapi/a_mtkrpcapi_menu.h
Mvm_linux/project_x/custom/dev/app_util/mtkrpcapi/mtkrpcapi_menu.c
Mvm_linux/project_x/target/mt5890/5890_driver/drv_cust/company/company_d_custom.c
Mvm_linux/project_x/target/mt5890/d_inc/company/d_company_custom.h
对详细信息进行说明如下:
“commit”行的数字序列为本次提交的commitID。“Author”行为提交人的邮箱地址、“Date”行为提交日期,“Fornewfeature”行为自定义的说明信息,是开发人员对本题提交的说明信息,例如增加的新功能,修改的代码漏洞等。
详细信息还包括增量代码在本地开发系统的工作目录代码中存储路径、文件名称等信息。
以其中一个为例,Mvm_linux/project_x/custom/dev/app_util/mtkrpcapi/a_mtkrpcapi_menu.h描述了本次提交的名称为a_mtkrpcapi_menu.h的增量代码(文件)的存储路径。持续集成系统根据以上详细信息从中提取本次提交的每个文件在工作目录代码中的存储路径以及文件名称。
进一步地,持续集成系统根据以上存储路径以及文件名称从临时分支的代码中提取增量代码。结合上述详细信息,增量代码(的文件)包括四个文件,分别为a_mtkrpcapi_menu.h、mtkrpcapi_menu.c、company_d_custom.c以及d_company_custom.h。
206、持续集成系统对增量代码进行静态代码测试以及构建测试,并向版本控制系统反馈测试结果。
持续集成系统对增量代码的测试包括静态代码测试和构建测试,结合图2-2,以下根据测试结果分情况进行说明。其中步骤2061-1至2061-2为静态代码测试或者构建测试失败的情况,步骤2062-1至2062-3为静态代码测试和构建测试均通过的情况。
2061-1、当临时分支的代码未通过增量静态代码测试或者增量构建测试时,持续集成系统向版本控制系统发送第二反馈消息。
其中,第二反馈消息用于指示临时分支的代码未通过增量静态代码测试或者增量构建测试。
增量代码为本次提交之后,临时分支的代码相对于本次提交之前正式分支的代码的增量。对临时分支的代码进行增量静态代码测试或者增量构建测试,指对增量代码进行静态代码测试或者构建测试。
具体的测试过程如下:
对增量代码进行静态代码测试,当测试未通过时,持续集成系统向版本控制系统发送第二反馈消息。
当静态代码测试通过时,对增量代码进行构建测试,当构建测试未通过时,持续集成系统向版本控制系统发送第二反馈消息。
优选的,第二反馈消息可以包括错误描述信息,例如具体错误类型(静态代码测试失败或者构建测试失败)以及增量代码发生错误的位置的信息等。
2061-2、版本控制系统向本地开发系统发送拒绝指示消息。
版本控制系统接收到持续集成系统发送的第二反馈消息后,向本地开发系统发送拒绝指示消息,以指示增量代码被拒绝合并入正式分支的代码。可选的,在第二反馈消息包括错误描述信息的情况下,拒绝指示消息将错误描述信息发送至本地开发系统,以便于开发人员根据错误描述信息对增量代码进行修改。
2062-1、当增量代码通过静态代码测试以及构建测试时,持续集成系统向版本控制系统发送第一反馈消息。
第一反馈消息用于指示临时分支的代码已通过增量静态代码测试以及增量构建测试。
2062-2、版本控制系统将增量代码存入正式代码库,与正式分支的代码合并。
版本控制系统接收到持续集成系统发送的第一反馈消息,即可确定增量代码正确无误。可选的,版本控制系统在接收到第一反馈消息后,将增量代码存入正式代码库,与正式分支的代码合并。或者,进一步进行同行代码检查(英文全称:PeerCodeReview),在开发人员输入的检查通过的指示后,再将增量代码合入正式代码库,与正式分支的代码合并。
2062-3、版本控制系统向本地开发系统发送接受指示消息。
其中,接受指示消息用于指示增量代码被合并入正式分支的代码。
207、持续集成系统对正式代码库中正式分支的代码进行全量静态代码测试以及全量构建测试。
需要说指出的是,并不是每次有新的增量代码合并入正式分支的代码之后都需要执行步骤207,可以重复多次执行步骤201-206之后,执行一次步骤207,或者定时执行,比如一天或者一周执行一次。
比较现有技术中直接将增量代码并入正式代码库然后进行全量静态代码测试以及全量构建测试的方式,本发明的实施例所提供的版本控制方法以及代码测试方法,在将增量代码合并入正式代码库之前,通过增量静态代码测试、增量构建测试以及同行代码检查等措施保证其正确性,最终对正式代码库中正式分支的代码进行全量静态代码测试以及全量构建测试时,成功率更高。
本发明的实施例所提供的版本控制方法以及代码测试方法,当本地开发系统提交增量代码时,将增量代码存入临时代码库,由持续集成系统对临时分支的代码进行增量静态代码测试以及增量构建测试,即对增量代码进行静态代码测试以及构建测试,通过测试后版本控制系统将增量代码合入正式代码库,与正式分支的代码合并。如果未通过测试则向开发人员反馈,以便开发人员进行修改。由于只对正式分支的代码的增量进行测试,测试时间短,反馈及时,开发人员可以方便地进行多次测试。增量代码通过测试后才存入正式代码库,因此对正式代码库进行全量静态代码测试的成功率大大提高,从而减少了多次全量静态代码测试所耗用的时间,缩短了软件产品的开发周期。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、电可擦可编程只读存储器(全称:electricallyerasableprogrammableread-onlymemory,简称:EEPROM)、光盘、磁盘或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户专线(英文全称:DigitalSubscriberLine,英文简称:DSL)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在通信介质的定义中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (9)
1.一种版本控制方法,应用于版本控制系统,其特征在于,所述版本控制方法包括:
接收增量代码,所述增量代码为本地开发系统向所述版本控制系统新提交的代码;
创建临时分支,并将所述增量代码存入临时代码库中;其中,所述临时分支为正式分支的从属分支,所述正式分支的代码存储于正式代码库中;
向持续集成系统发送所述临时分支的代码以及增量标识;其中,所述临时分支的代码包括所述正式分支的代码以及所述增量代码,所述增量标识用于标识所述增量代码;
接收所述持续集成系统发送的第一反馈消息,所述第一反馈消息用于指示所述临时分支的代码已通过增量静态代码测试以及增量构建测试;
将所述增量代码合并入所述正式分支的代码。
2.根据权利要求1所述的版本控制方法,其特征在于,所述接收所述本地开发系统发送的分支创建请求以及所述增量代码之后,所述版本控制方法还包括:
向所述持续集成系统发送代码提交指示消息,所述代码提交指示消息包括分支标识,所述分支标识用于标识所述临时分支;
接收所述持续集成系统发送的下载请求消息,所述下载请求消息用于请求下载所述临时分支的代码以及所述增量标识。
3.根据权利要求1所述的版本控制方法,其特征在于,所述版本控制方法还包括:
接收所述持续集成系统发送的第二反馈消息,所述第二反馈消息用于指示所述临时分支的代码未通过增量静态代码测试或者增量构建测试;
向所述本地开发系统发送拒绝指示消息,所述拒绝指示消息用于指示所述增量代码被拒绝合并入所述正式分支的代码。
4.一种代码测试方法,应用于持续集成系统,其特征在于,所述代码测试方法包括:
接收版本控制系统发送的临时分支的代码以及增量标识;其中,所述临时分支为正式分支的从属分支,所述临时分支的代码包括所述正式分支的代码以及增量代码,所述正式分支的代码存储于所述版本控制系统的正式代码库中,所述增量代码为本地开发系统向所述版本控制系统新提交的代码,所述增量代码储于版本控制系统的临时代码库中,所述增量标识用于标识所述增量代码;
根据所述增量标识,从所述临时分支的代码中获取所述增量代码;
对所述增量代码进行静态代码测试以及构建测试;
当所述增量代码通过静态代码测试以及构建测试时,向所述版本控制系统发送第一反馈消息,以便于所述版本控制系统将所述增量代码合并入所述正式分支的代码;其中,所述第一反馈消息用于指示所述临时分支的代码已通过增量静态代码测试以及增量构建测试。
5.根据权利要求4所述的代码测试方法,其特征在于,所述接收版本控制系统发送的临时分支的代码以及增量标识之前,所述代码测试方法还包括:
接收所述版本控制系统发送的代码提交指示消息,所述代码提交指示消息包括分支标识,所述分支标识用于标识所述临时分支;
向所述版本控制系统发送下载请求消息,所述下载请求消息用于请求下载所述临时分支的代码以及所述增量标识。
6.根据权利要求4所述的代码测试方法,其特征在于,所述代码测试方法还包括:
当所述临时分支的代码未通过增量静态代码测试或者增量构建测试时,向所述版本控制系统发送第二反馈消息,所述第二反馈消息用于指示所述临时分支的代码未通过增量静态代码测试或者增量构建测试。
7.一种软件开发系统,其特征在于,包括本地开发系统、版本控制系统以及持续集成系统;
所述本地开发系统,用于向所述版本控制系统发送增量代码,所述增量代码为所述本地开发系统向所述版本控制系统新提交的代码;
所述版本控制系统用于创建临时分支,并将所述增量代码存入临时代码库中;其中,所述临时分支为正式分支的从属分支,所述正式分支的代码存储于正式代码库中;
所述版本控制系统,还用于向所述持续集成系统发送所述临时分支的代码以及增量标识;其中,所述临时分支的代码包括所述正式分支的代码以及所述增量代码,所述增量标识用于标识所述增量代码;
所述持续集成系统,用于根据所述增量标识,从所述临时分支的代码中获取所述增量代码,对所述增量代码进行静态代码测试以及构建测试;当所述增量代码通过静态代码测试以及构建测试时,向所述版本控制系统发送第一反馈消息;所述第一反馈消息用于指示所述临时分支的代码已通过增量静态代码测试以及增量构建测试;
所述版本控制系统,还用于将所述增量代码合并入正式分支的代码。
8.根据权利要求7所述的软件开发系统,其特征在于,
所述版本控制系统,还用于向所述持续集成系统发送代码提交指示消息,所述代码提交指示消息包括分支标识,所述分支标识用于标识所述临时分支;
所述持续集成系统,还用于向所述版本控制系统发送下载请求消息,所述下载请求消息用于请求下载所述临时分支的代码以及所述增量标识。
9.根据权利要求7所述的软件开发系统,其特征在于,
所述持续集成系统,还用于当所述临时分支的代码未通过增量静态代码测试或者增量构建测试时,向所述版本控制系统发送第二反馈消息,所述第二反馈消息用于指示所述临时分支的代码未通过增量静态代码测试或者增量构建测试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510897634.6A CN105404519A (zh) | 2015-12-07 | 2015-12-07 | 一种版本控制方法、代码测试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510897634.6A CN105404519A (zh) | 2015-12-07 | 2015-12-07 | 一种版本控制方法、代码测试方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105404519A true CN105404519A (zh) | 2016-03-16 |
Family
ID=55470022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510897634.6A Pending CN105404519A (zh) | 2015-12-07 | 2015-12-07 | 一种版本控制方法、代码测试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105404519A (zh) |
Cited By (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893035A (zh) * | 2016-03-30 | 2016-08-24 | 乐视控股(北京)有限公司 | 分布式代码管理方法及系统 |
CN106227574A (zh) * | 2016-07-15 | 2016-12-14 | 浪潮电子信息产业股份有限公司 | 一种基于规则扩展的代码审查方法 |
CN106294171A (zh) * | 2016-08-17 | 2017-01-04 | 北京奇虎科技有限公司 | 产品自动部署的测试系统、方法和装置 |
CN106294140A (zh) * | 2016-08-02 | 2017-01-04 | 中国科学院软件研究所 | 一种基于代码仓库提交说明的PoC快速生成方法 |
CN106445548A (zh) * | 2016-10-11 | 2017-02-22 | 武汉斗鱼网络科技有限公司 | 一种测试包下发方法和装置 |
CN106648823A (zh) * | 2016-12-30 | 2017-05-10 | 东软集团股份有限公司 | 代码发布的方法及装置 |
CN106970818A (zh) * | 2017-03-27 | 2017-07-21 | 深圳市中博睿存信息技术有限公司 | 一种用于Linux平台的软件持续集成方法及装置 |
CN107153540A (zh) * | 2017-04-19 | 2017-09-12 | 畅捷通信息技术股份有限公司 | 增量构建方法及装置 |
CN107229482A (zh) * | 2017-08-04 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种用于软件系统开发的方法及系统 |
CN107346287A (zh) * | 2017-07-20 | 2017-11-14 | 广东艾檬电子科技有限公司 | 一种题库应用程序测试方法、终端及模拟器 |
CN107357583A (zh) * | 2017-07-13 | 2017-11-17 | 上海市共进通信技术有限公司 | 基于软件代码进行模块自动构建的系统及方法 |
CN107463375A (zh) * | 2017-07-18 | 2017-12-12 | 上海斐讯数据通信技术有限公司 | 一种检测源代码的方法和系统 |
CN107797927A (zh) * | 2017-10-18 | 2018-03-13 | 中国平安人寿保险股份有限公司 | 应用自动化测试方法、装置、设备及可读存储介质 |
CN107943512A (zh) * | 2017-11-28 | 2018-04-20 | 晶晨半导体(上海)股份有限公司 | 一种软件系统的更新方法 |
CN108319551A (zh) * | 2017-12-29 | 2018-07-24 | 五八有限公司 | 一种软件的测试方法、装置、计算机设备及可读存储介质 |
CN108334313A (zh) * | 2017-12-27 | 2018-07-27 | 苏州中晟宏芯信息科技有限公司 | 用于大型soc研发的持续集成方法、装置及代码管理系统 |
CN108415725A (zh) * | 2018-03-01 | 2018-08-17 | 深圳市创梦天地科技有限公司 | 渠道应用包制作装置、方法、电子设备以及存储介质 |
CN108776643A (zh) * | 2018-06-04 | 2018-11-09 | 腾讯科技(武汉)有限公司 | 一种基于版本控制流程的目标代码合并控制方法及系统 |
CN108984183A (zh) * | 2018-08-28 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种软件跨地域构建方法、装置、设备及存储介质 |
CN109086071A (zh) * | 2018-08-22 | 2018-12-25 | 平安普惠企业管理有限公司 | 一种管理软件版本信息的方法及服务器 |
CN109240734A (zh) * | 2018-07-17 | 2019-01-18 | 北京奇虎科技有限公司 | 代码提交方法及装置 |
CN109246481A (zh) * | 2018-07-12 | 2019-01-18 | 广州视源电子科技股份有限公司 | 电机参数设置方法、装置、移动终端及存储介质 |
CN109271194A (zh) * | 2018-08-22 | 2019-01-25 | 五八有限公司 | 基于分布式版本控制系统的分支访问方法和装置 |
CN109491696A (zh) * | 2018-11-26 | 2019-03-19 | 中国银行股份有限公司 | 增量源码确定方法、装置及系统 |
CN109508203A (zh) * | 2018-11-26 | 2019-03-22 | 中国银行股份有限公司 | 版本一致性确定方法、装置及系统 |
CN109656621A (zh) * | 2018-12-19 | 2019-04-19 | 睿驰达新能源汽车科技(北京)有限公司 | 一种合并代码的方法及装置 |
CN109710303A (zh) * | 2018-12-26 | 2019-05-03 | 苏州思必驰信息科技有限公司 | 语音交互产品的多版本并行开发方法及系统 |
CN109726114A (zh) * | 2018-09-07 | 2019-05-07 | 网联清算有限公司 | 代码质量管控方法、装置及电子设备 |
CN109901876A (zh) * | 2019-02-28 | 2019-06-18 | 携程旅游信息技术(上海)有限公司 | 代码评审方法、系统、设备及存储介质 |
CN109933364A (zh) * | 2019-02-25 | 2019-06-25 | 晶晨半导体(上海)股份有限公司 | 一种代码管理方法 |
CN109947657A (zh) * | 2019-04-03 | 2019-06-28 | 广东电网有限责任公司 | 一种企业级信息管理系统的变动范围分析方法和系统 |
CN110162334A (zh) * | 2019-05-29 | 2019-08-23 | 上海摩软通讯技术有限公司 | 一种代码管理方法、装置、存储介质及计算机程序产品 |
CN110286880A (zh) * | 2019-06-17 | 2019-09-27 | 中国科学院软件研究所 | 一种面向GitHub与Travis CI的完整持续集成数据收集方法 |
CN110334326A (zh) * | 2019-09-02 | 2019-10-15 | 宁波均胜普瑞智能车联有限公司 | 一种识别配方文件并转化为xml文件的方法及系统 |
CN111190636A (zh) * | 2018-11-14 | 2020-05-22 | 上海哔哩哔哩科技有限公司 | 分支代码持续集成中的自动探测方法、装置及存储介质 |
CN111338632A (zh) * | 2018-12-19 | 2020-06-26 | 中国移动通信集团湖南有限公司 | 一种云平台镜像构建方法和装置 |
CN111382049A (zh) * | 2018-12-28 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 代码提交方法、装置及电子设备 |
CN111639019A (zh) * | 2020-04-24 | 2020-09-08 | 北京五八信息技术有限公司 | 代码测试方法、装置及可读存储介质 |
CN111783104A (zh) * | 2020-07-02 | 2020-10-16 | 北京自如信息科技有限公司 | 一种漏洞检查方法、持续集成代码的漏洞检查方法及装置 |
CN111796855A (zh) * | 2020-07-22 | 2020-10-20 | 大箴(杭州)科技有限公司 | 一种增量版本更新方法、装置、存储介质及计算机设备 |
CN112463585A (zh) * | 2020-10-29 | 2021-03-09 | 至誉科技(武汉)有限公司 | 固态硬盘代码的测试方法、系统、存储介质及电子设备 |
CN112732265A (zh) * | 2019-10-29 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和相关装置 |
CN113127036A (zh) * | 2021-04-16 | 2021-07-16 | 展讯通信(上海)有限公司 | 软件开发系统、代码的持续集成方法、装置和介质 |
WO2022222626A1 (zh) * | 2021-04-21 | 2022-10-27 | 北京字节跳动网络技术有限公司 | 一种增量源码获取方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424088A (zh) * | 2013-08-21 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 软件的测试方法及装置 |
CN104423960A (zh) * | 2013-09-10 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 一种项目持续集成的方法及系统 |
CN104598384A (zh) * | 2015-02-06 | 2015-05-06 | 中国民生银行股份有限公司 | 代码检测方法及装置 |
-
2015
- 2015-12-07 CN CN201510897634.6A patent/CN105404519A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424088A (zh) * | 2013-08-21 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 软件的测试方法及装置 |
CN104423960A (zh) * | 2013-09-10 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 一种项目持续集成的方法及系统 |
CN104598384A (zh) * | 2015-02-06 | 2015-05-06 | 中国民生银行股份有限公司 | 代码检测方法及装置 |
Cited By (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893035A (zh) * | 2016-03-30 | 2016-08-24 | 乐视控股(北京)有限公司 | 分布式代码管理方法及系统 |
CN106227574A (zh) * | 2016-07-15 | 2016-12-14 | 浪潮电子信息产业股份有限公司 | 一种基于规则扩展的代码审查方法 |
CN106294140B (zh) * | 2016-08-02 | 2018-12-18 | 中国科学院软件研究所 | 一种基于代码仓库提交说明的PoC快速生成方法 |
CN106294140A (zh) * | 2016-08-02 | 2017-01-04 | 中国科学院软件研究所 | 一种基于代码仓库提交说明的PoC快速生成方法 |
CN106294171A (zh) * | 2016-08-17 | 2017-01-04 | 北京奇虎科技有限公司 | 产品自动部署的测试系统、方法和装置 |
CN106445548B (zh) * | 2016-10-11 | 2021-01-01 | 武汉斗鱼网络科技有限公司 | 一种测试包下发方法和装置 |
CN106445548A (zh) * | 2016-10-11 | 2017-02-22 | 武汉斗鱼网络科技有限公司 | 一种测试包下发方法和装置 |
CN106648823B (zh) * | 2016-12-30 | 2019-12-10 | 东软集团股份有限公司 | 代码发布的方法及装置 |
CN106648823A (zh) * | 2016-12-30 | 2017-05-10 | 东软集团股份有限公司 | 代码发布的方法及装置 |
CN106970818A (zh) * | 2017-03-27 | 2017-07-21 | 深圳市中博睿存信息技术有限公司 | 一种用于Linux平台的软件持续集成方法及装置 |
CN107153540A (zh) * | 2017-04-19 | 2017-09-12 | 畅捷通信息技术股份有限公司 | 增量构建方法及装置 |
CN107357583A (zh) * | 2017-07-13 | 2017-11-17 | 上海市共进通信技术有限公司 | 基于软件代码进行模块自动构建的系统及方法 |
CN107463375A (zh) * | 2017-07-18 | 2017-12-12 | 上海斐讯数据通信技术有限公司 | 一种检测源代码的方法和系统 |
CN107346287A (zh) * | 2017-07-20 | 2017-11-14 | 广东艾檬电子科技有限公司 | 一种题库应用程序测试方法、终端及模拟器 |
CN107229482A (zh) * | 2017-08-04 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种用于软件系统开发的方法及系统 |
CN107797927A (zh) * | 2017-10-18 | 2018-03-13 | 中国平安人寿保险股份有限公司 | 应用自动化测试方法、装置、设备及可读存储介质 |
CN107943512A (zh) * | 2017-11-28 | 2018-04-20 | 晶晨半导体(上海)股份有限公司 | 一种软件系统的更新方法 |
CN108334313A (zh) * | 2017-12-27 | 2018-07-27 | 苏州中晟宏芯信息科技有限公司 | 用于大型soc研发的持续集成方法、装置及代码管理系统 |
CN108319551B (zh) * | 2017-12-29 | 2021-12-17 | 五八有限公司 | 一种软件的测试方法、装置、计算机设备及可读存储介质 |
CN108319551A (zh) * | 2017-12-29 | 2018-07-24 | 五八有限公司 | 一种软件的测试方法、装置、计算机设备及可读存储介质 |
CN108415725A (zh) * | 2018-03-01 | 2018-08-17 | 深圳市创梦天地科技有限公司 | 渠道应用包制作装置、方法、电子设备以及存储介质 |
CN108776643B (zh) * | 2018-06-04 | 2021-10-22 | 腾讯科技(武汉)有限公司 | 一种基于版本控制流程的目标代码合并控制方法及系统 |
CN108776643A (zh) * | 2018-06-04 | 2018-11-09 | 腾讯科技(武汉)有限公司 | 一种基于版本控制流程的目标代码合并控制方法及系统 |
CN109246481B (zh) * | 2018-07-12 | 2021-08-17 | 广州视源电子科技股份有限公司 | 电视机参数设置方法、装置、移动终端及存储介质 |
CN109246481A (zh) * | 2018-07-12 | 2019-01-18 | 广州视源电子科技股份有限公司 | 电机参数设置方法、装置、移动终端及存储介质 |
CN109240734A (zh) * | 2018-07-17 | 2019-01-18 | 北京奇虎科技有限公司 | 代码提交方法及装置 |
CN109086071A (zh) * | 2018-08-22 | 2018-12-25 | 平安普惠企业管理有限公司 | 一种管理软件版本信息的方法及服务器 |
CN109271194A (zh) * | 2018-08-22 | 2019-01-25 | 五八有限公司 | 基于分布式版本控制系统的分支访问方法和装置 |
CN108984183A (zh) * | 2018-08-28 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种软件跨地域构建方法、装置、设备及存储介质 |
CN109726114A (zh) * | 2018-09-07 | 2019-05-07 | 网联清算有限公司 | 代码质量管控方法、装置及电子设备 |
CN111190636A (zh) * | 2018-11-14 | 2020-05-22 | 上海哔哩哔哩科技有限公司 | 分支代码持续集成中的自动探测方法、装置及存储介质 |
CN109491696A (zh) * | 2018-11-26 | 2019-03-19 | 中国银行股份有限公司 | 增量源码确定方法、装置及系统 |
CN109508203B (zh) * | 2018-11-26 | 2022-01-21 | 中国银行股份有限公司 | 版本一致性确定方法、装置及系统 |
CN109491696B (zh) * | 2018-11-26 | 2022-08-19 | 中国银行股份有限公司 | 增量源码确定方法、装置及系统 |
CN109508203A (zh) * | 2018-11-26 | 2019-03-22 | 中国银行股份有限公司 | 版本一致性确定方法、装置及系统 |
CN109656621A (zh) * | 2018-12-19 | 2019-04-19 | 睿驰达新能源汽车科技(北京)有限公司 | 一种合并代码的方法及装置 |
CN111338632A (zh) * | 2018-12-19 | 2020-06-26 | 中国移动通信集团湖南有限公司 | 一种云平台镜像构建方法和装置 |
CN109710303A (zh) * | 2018-12-26 | 2019-05-03 | 苏州思必驰信息科技有限公司 | 语音交互产品的多版本并行开发方法及系统 |
CN111382049A (zh) * | 2018-12-28 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 代码提交方法、装置及电子设备 |
CN111382049B (zh) * | 2018-12-28 | 2023-05-02 | 阿里云计算有限公司 | 代码提交方法、装置及电子设备 |
CN109933364A (zh) * | 2019-02-25 | 2019-06-25 | 晶晨半导体(上海)股份有限公司 | 一种代码管理方法 |
CN109901876A (zh) * | 2019-02-28 | 2019-06-18 | 携程旅游信息技术(上海)有限公司 | 代码评审方法、系统、设备及存储介质 |
CN109947657A (zh) * | 2019-04-03 | 2019-06-28 | 广东电网有限责任公司 | 一种企业级信息管理系统的变动范围分析方法和系统 |
CN110162334A (zh) * | 2019-05-29 | 2019-08-23 | 上海摩软通讯技术有限公司 | 一种代码管理方法、装置、存储介质及计算机程序产品 |
CN110286880B (zh) * | 2019-06-17 | 2020-12-01 | 中国科学院软件研究所 | 一种面向GitHub与Travis CI的完整持续集成数据收集方法 |
CN110286880A (zh) * | 2019-06-17 | 2019-09-27 | 中国科学院软件研究所 | 一种面向GitHub与Travis CI的完整持续集成数据收集方法 |
CN110334326A (zh) * | 2019-09-02 | 2019-10-15 | 宁波均胜普瑞智能车联有限公司 | 一种识别配方文件并转化为xml文件的方法及系统 |
CN110334326B (zh) * | 2019-09-02 | 2019-11-22 | 宁波均胜普瑞智能车联有限公司 | 一种识别配方文件并转化为xml文件的方法及系统 |
CN112732265A (zh) * | 2019-10-29 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和相关装置 |
CN112732265B (zh) * | 2019-10-29 | 2024-03-19 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和相关装置 |
CN111639019B (zh) * | 2020-04-24 | 2023-08-25 | 北京五八信息技术有限公司 | 代码测试方法、装置及可读存储介质 |
CN111639019A (zh) * | 2020-04-24 | 2020-09-08 | 北京五八信息技术有限公司 | 代码测试方法、装置及可读存储介质 |
CN111783104B (zh) * | 2020-07-02 | 2021-04-06 | 北京自如信息科技有限公司 | 一种漏洞检查方法、持续集成代码的漏洞检查方法及装置 |
CN111783104A (zh) * | 2020-07-02 | 2020-10-16 | 北京自如信息科技有限公司 | 一种漏洞检查方法、持续集成代码的漏洞检查方法及装置 |
CN111796855A (zh) * | 2020-07-22 | 2020-10-20 | 大箴(杭州)科技有限公司 | 一种增量版本更新方法、装置、存储介质及计算机设备 |
CN112463585A (zh) * | 2020-10-29 | 2021-03-09 | 至誉科技(武汉)有限公司 | 固态硬盘代码的测试方法、系统、存储介质及电子设备 |
CN113127036A (zh) * | 2021-04-16 | 2021-07-16 | 展讯通信(上海)有限公司 | 软件开发系统、代码的持续集成方法、装置和介质 |
WO2022222626A1 (zh) * | 2021-04-21 | 2022-10-27 | 北京字节跳动网络技术有限公司 | 一种增量源码获取方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105404519A (zh) | 一种版本控制方法、代码测试方法及系统 | |
CN111159049B (zh) | 接口自动化测试方法及系统 | |
CN104021080B (zh) | 基于自定义脚本的自动化测试系统 | |
CN110096424B (zh) | 测试的处理方法、装置、电子设备及存储介质 | |
CN103180834B (zh) | 自动操作系统测试框架 | |
CN111831325B (zh) | 应用中配置文件的更新方法、装置、系统和介质 | |
CN111142899A (zh) | 数据库脚本执行方法、装置、存储介质及电子设备 | |
CN109710810A (zh) | 变更管理方法、装置、设备和存储介质 | |
US10275234B2 (en) | Selective bypass of code flows in software program | |
CN108563539A (zh) | 接口测试方法、服务器、可读存储介质及系统 | |
CN109614325B (zh) | 一种确定控件属性的方法及装置、电子设备和存储介质 | |
CN113515297A (zh) | 一种版本更新方法、装置、电子设备及存储介质 | |
US11544050B1 (en) | Software patch automation | |
CN105550116A (zh) | 一种自动化测试管理系统 | |
CN112632947A (zh) | 在线文档处理方法、在线文档处理装置和电子设备 | |
CN107992420A (zh) | 提测项目的管理方法及系统 | |
CN117215558A (zh) | 安卓的基于可视化的软件开发方法、装置、设备及介质 | |
CN113220561A (zh) | 一种测试用例管理方法、装置、设备及介质 | |
CN115981718A (zh) | 一种代码发布方法、装置、计算机设备和存储介质 | |
CN111435306A (zh) | 一种代码的管理方法和装置 | |
CN104881455B (zh) | 一种基于mysql的结构差异处理方法及系统 | |
JP6984120B2 (ja) | ロードコンペア装置、ロードコンペアプログラムおよびロードコンペア方法 | |
CN112527276A (zh) | 一种可视化编程工具中的数据更新方法、装置及终端设备 | |
CN111897794A (zh) | 数据库的维护方法、装置、电子设备和存储介质 | |
CN101436139A (zh) | Fpga下载方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160316 |
|
RJ01 | Rejection of invention patent application after publication |