CN111078274B - 一种代码开发方法、装置、电子设备和计算机存储介质 - Google Patents

一种代码开发方法、装置、电子设备和计算机存储介质 Download PDF

Info

Publication number
CN111078274B
CN111078274B CN201911250710.9A CN201911250710A CN111078274B CN 111078274 B CN111078274 B CN 111078274B CN 201911250710 A CN201911250710 A CN 201911250710A CN 111078274 B CN111078274 B CN 111078274B
Authority
CN
China
Prior art keywords
merging
branch
branches
compiling
trunk
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.)
Active
Application number
CN201911250710.9A
Other languages
English (en)
Other versions
CN111078274A (zh
Inventor
孔校军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing 58 Information Technology Co Ltd
Original Assignee
Beijing 58 Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing 58 Information Technology Co Ltd filed Critical Beijing 58 Information Technology Co Ltd
Priority to CN201911250710.9A priority Critical patent/CN111078274B/zh
Publication of CN111078274A publication Critical patent/CN111078274A/zh
Application granted granted Critical
Publication of CN111078274B publication Critical patent/CN111078274B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了一种代码开发方法、装置、电子设备和计算机存储介质,包括:从代码开发程序中的主干分支切出一一对应的至少一个功能分支和至少一个支干分支,支干分支与主干分支具有相同的特性。将每个代码开发后的功能分支与对应的支干分支进行预合并处理,得到预合并分支。在预合并处理成功后,对每个预合并分支进行编译处理;将编译后的预合并分支与主干分支进行集成合并,每次集成合并时只允许一个预合并分支与主干分支进行合并。可见,本发明提供的方法,可以通过预合并方式提前解决功能分支与主干分支合并后可能出现的代码冲突问题,以及,可以通过编译的方式提前验证功能分支合并到主干分支的稳定性,进而保证多人进行代码开发时的稳定性。

Description

一种代码开发方法、装置、电子设备和计算机存储介质
技术领域
本申请涉及计算机软件开发技术领域,尤其涉及一种代码开发方法、装置、电子设备和计算机存储介质。
背景技术
在代码开发过程中,常需要多个开发者对同一个项目功能进行代码开发。为保证多个开发者能够协作开发,在多人的软件项目团队中,大多使用多分支的开发方式,每个人在开发需求时单独从主干分支切出一个功能分支,并在各自的功能分支上进行需求开发,需求开发完毕测试通过后,再将多个功能分支合并至主干分支。
但是,这种开发与代码集成模式有以下两个问题:一是在多人开发时,不能保证每个开发者开发的功能分支实时获取到最新的主干分支代码,这样易出现需求开发完成后与主干分支的代码冲突的问题,而代码冲突一旦解决出错就会导致最终合并到主干分支的代码出错,出现主干分支代码异常,无法进行编译。二是在一些开发者未安装完整的流程进行测试时,功能分支出现有问题的代码也会合并到主干分支,也会导致主干分支编译出错。
一旦主干分支出现问题导致无法正确编译,就会影响后续测试,如果主干分支的问题没有及时解决甚至会影响软件版本正常发布。虽然多人开发代码过程汇总,有人工代码审核流程,但由人工执行会存在遗漏问题,并不能保证执行到位,依然无法保证主干分支的稳定性。
发明内容
本申请提供了一种代码开发方法、装置、电子设备和计算机存储介质,以解决现有的多人开发代码的方法不能保证主干分支的稳定性的问题。
第一方面,本申请提供了一种代码开发方法,包括以下步骤:
获取从代码开发程序中的主干分支切出的至少一个功能分支和至少一个支干分支,所述功能分支和支干分支一一对应,所述支干分支的代码与所述主干分支中的部分代码相同;
将每一个代码开发后的功能分支和对应的所述支干分支进行预合并处理,得到多个预合并分支;
在预合并处理成功后,对每个所述预合并分支进行编译处理;
在编译处理成功后,将所述编译后的预合并分支与主干分支进行集成合并,其中,后一所述编译后的预合并分支在前一所述编译后的预合并分支的集成合并处理成功之后再进行集成合并。
进一步地,所述将每一个代码开发后的功能分支和对应的所述支干分支进行预合并处理,得到多个预合并分支,包括:
调用创建合并请求接口,根据所述代码开发后的功能分支和对应的支干分支,创建预合并请求;
根据所述预合并请求,调用合并接口,将所述代码开发后的功能分支和对应的支干分支进行预合并处理,得到多个预合并分支。
进一步地,所述在预合并处理成功后,对每个所述预合并分支进行编译处理,包括:
调用持续集成工具接口,基于每个所述预合并分支,创建对应的编译任务;
根据每个所述编译任务,对对应的所述预合并分支进行编译;
按照预定时长,查询每个所述编译处理过程的编译结果;
在接收到的编译结果为编译成功时,确定对应的所述预合并分支的编译过程结束。
进一步地,所述在编译处理成功后,将所述编译后的预合并分支与主干分支进行集成合并,包括:
调用创建合并请求接口,根据所述编译后的预合并分支和主干分支,创建集成合并请求;
根据所述集成合并请求,调用合并接口,将编译后的预合并分支和主干分支进行集成合并;
在当前所述编译后的预合并分支和主干分支的集成合并处理成功之后,进行下一所述编译后的预合并分支和主干分支的集成合并处理过程;
调用删除分支接口,分别将每一个所述预合并分支删除。
进一步地,还包括:
如果所述编译处理不成功,或者,所述集成合并处理不成功,生成重置指令;
根据所述重置指令,调用持续集成工具接口,删除编译过程创建的编译任务,或者,调用删除分支接口,删除预合并分支,以将代码开发状态回退到初始状态。
第二方面,本申请提供了一种代码开发装置,包括:
代码开发分支获取模块,用于获取从代码开发程序中的主干分支切出的至少一个功能分支和至少一个支干分支,所述功能分支和支干分支一一对应,所述支干分支的代码与所述主干分支中的部分代码相同;
预合并处理模块,用于将每一个代码开发后的功能分支和对应的所述支干分支进行预合并处理,得到多个预合并分支;
编译处理模块,用于在预合并处理成功后,对每个所述预合并分支进行编译处理;
集成合并处理模块,用于在编译处理成功后,将所述编译后的预合并分支与主干分支进行集成合并,其中,后一所述编译后的预合并分支在前一所述编译后的预合并分支的集成合并处理成功之后再进行集成合并。
进一步地,所述预合并处理模块,包括:
预合并请求创建单元,用于调用创建合并请求接口,根据所述代码开发后的功能分支和对应的支干分支,创建预合并请求;
预合并处理单元,用于根据所述预合并请求,调用合并接口,将所述代码开发后的功能分支和对应的支干分支进行预合并处理,得到多个预合并分支。
进一步地,所述编译处理模块,包括:
编译任务创建单元,用于调用持续集成工具接口,基于每个所述预合并分支,创建对应的编译任务;
编译单元,用于根据每个所述编译任务,对对应的所述预合并分支进行编译;
编译结果查询单元,用于按照预定时长,查询每个所述编译处理过程的编译结果;
编译过程结束确定单元,用于在接收到的编译结果为编译成功时,确定对应的所述预合并分支的编译过程结束。
进一步地,所述集成合并处理模块,包括:
集成合并请求创建单元,用于调用创建合并请求接口,根据所述编译后的预合并分支和主干分支,创建集成合并请求;
集成合并单元,用于根据所述集成合并请求,调用合并接口,将编译后的预合并分支和主干分支进行集成合并;
下一集成合并触发单元,用于在当前所述编译后的预合并分支和主干分支的集成合并处理成功之后,进行下一所述编译后的预合并分支和主干分支的集成合并处理过程;
分支删除单元,用于调用删除分支接口,分别将每一个所述预合并分支删除。
进一步地,还包括:
重置指令生成模块,用于在所述编译处理不成功,或者,所述集成合并处理不成功,生成重置指令;
删除模块,用于根据所述重置指令,调用持续集成工具接口,删除编译过程创建的编译任务,或者,调用删除分支接口,删除预合并分支,以将代码开发状态回退到初始状态。
第三方面,本申请提供了一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,以实现第一方面所述的代码开发方法。
第四方面,本申请提供了一种计算机存储介质,所述计算机存储介质中存储有计算机程序,当代码开发装置的至少一个处理器执行所述计算机程序时,代码开发装置执行第一方面所述的代码开发方法。
由以上技术方案可知,本发明实施例提供的一种代码开发方法、装置、电子设备和计算机存储介质,包括:从代码开发程序中的主干分支切出一一对应的至少一个功能分支和至少一个支干分支,支干分支与主干分支具有相同的特性。将每个代码开发后的功能分支与对应的支干分支进行预合并处理,得到预合并分支,提前验证将功能分支合并到主干分支之后是否会出现代码冲突。在预合并处理成功后,对每个预合并分支进行编译处理,以预先验证功能分支合并到主干分支的稳定性;在编译处理成功后,将编译后的预合并分支与主干分支进行集成合并,集成合并为串行的合并方式,即每次集成合并时只允许一个预合并分支与主干分支进行合并,使得后一预合并分支可以与最新的主干分支进行集成合并,以确保每次的预合并分支与主干分支一致,保证每次最终的主干分支的正确性。可见,本发明提供的方法,可以通过预合并方式提前解决功能分支与主干分支合并后可能出现的代码冲突问题,以及,可以通过对预合并分支进行编译的方式提前验证功能分支合并到主干分支的稳定性,进而保证多人进行代码开发时的稳定性。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的代码开发方法的流程图;
图2为本发明实施例提供的代码开发方法的合并流程示意图;
图3为本发明实施例提供的得到预合并分支的方法流程图;
图4为本发明实施例提供的编译处理的方法流程图;
图5为本发明实施例提供的集成合并的方法流程图;
图6为本发明实施例提供的代码开发装置的结构框图;
图7为本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
在多人代码开发过程中,为了避免多人进行代码开发易出现的代码冲突、主干分支不稳定的问题,本发明实施例提出了一套业务系统,此业务系统主要通过预合并的方式,将功能分支合并至预合并分支,并进行编译,以提前验证一下功能分支与预合并分支的稳定性,编译通过后再将预合并分支最终合并至主干分支,达到提前发现问题,解决问题的目的,以提高主干分支的代码稳定性。
图1为本发明实施例提供的代码开发方法的流程图;图2为本发明实施例提供的代码开发方法的合并流程示意图。
本发明实施例提供的一种代码开发方法,应用于业务系统,业务系统可实现多人的代码开发业务,业务系统中安装有代码开发程序,实现预合并、编译和代码合并的功能。本实施例中,业务系统中采用Gitlab作为代码管理工具。Gitlab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。Git是分布式代码管理容器,该代码管理容器可以在本地和远端都保有一份相同的代码。
Gitlab配置有创建分支接口、创建合并请求接口和合并接口,创建分支接口用于创建支干分支,创建合并请求接口用于创建一个预合并请求,合并接口用于根据预合并请求进行预合并处理。
如图1和图2所示,本发明实施例提供的代码开发方法,包括以下步骤:
S1、获取从代码开发程序中的主干分支切出的至少一个功能分支和至少一个支干分支,功能分支和支干分支一一对应,支干分支的代码与所述主干分支中的部分代码相同。
为适配多人的代码开发,业务系统中的代码开发程序中包括主干分支和多个功能分支,每个开发人员对应一个功能分支进行代码开发,代码开发后的功能分支再合并到主干分支中。
本实施例中,为提高主干分支的代码稳定性,在主干分支中切出至少一个支干分支,具体方式是调用Gitlab的创建分支接口,在主干分支中创建一个支干分支。此处,主干分支为进行过集成合并后形成的新主干分支,创建支干分支的主干分支中的代码为集合功能分支和主干分支的最新代码。
支干分支具有与主干分支相同的代码特性,即支干分支中的代码与主干分支中的部分代码相同。也就是说,支干分支可以作为主干分支的替代分支,与功能分支提前进行编译,以提前验证在将功能分支最终合并到主干分支后是否会出现代码冲突的问题。若存在代码冲突,则提前解决问题,以通过提前验证可以保证主干分支的代码稳定性。
为此,为保证每个功能分支均可以与对应的支干分支进行提前的代码稳定性验证,需使由主干分支切出的支干分支的数量与功能分支相同,且支干分支与功能分支为一一对应关系。
S2、将每一个代码开发后的功能分支和对应的支干分支进行预合并处理,得到多个预合并分支。
多个开发人员并行对各自的功能分支进行代码开发后,将每个代码开发后的功能分支与对应的支干分支进行预合并处理,得到的预合并分支可以看作是功能分支与主干分支提前进行合并的分支。
本实施例提供的代码开发方法,采用并行开发串行合并的方式,多个功能分支可同时进行代码开发,但在执行预合并过程时,需要在前一个功能分支与对应的支干分支预合并之后,再进行下一个功能分支与对应的支干分支的预合并。此时,下一个支干分支是基于前一个预合并分支与主干分支经过集成合并后得到的新主干分支创建而成,以保证每个代码开发后的功能分支均能够与最新的主干分支进行代码开发,避免出现代码冲突,保证代码稳定性。
图3为本发明实施例提供的得到预合并分支的方法流程图。参见图3,具体地,本实施例中,按照下述步骤将每一个代码开发后的功能分支和对应的所述支干分支进行预合并处理,得到多个预合并分支:
S21、调用创建合并请求接口,根据代码开发后的功能分支和对应的支干分支,创建预合并请求。
S22、根据预合并请求,调用合并接口,将代码开发后的功能分支和对应的支干分支进行预合并处理,得到多个预合并分支。
业务系统中的代码开发程序调用Gitlab中的创建合并请求接口,创建预合并请求。每个预合并请求对应一组代码开发后的功能分支和支干分支,预合并请求用于实现一一对应的代码开发后的功能分支和支干分支的预合并过程。
在生成预合并请求后,业务系统中的代码开发程序调用Gitlab中的合并接口,将代码开发后的功能分支和对应的支干分支进行预合并处理,得到多个预合并分支,也就是说,每组功能分支和支干分支经过预合并之后得到一个预合并分支。
参见图2,举例说明,主干分支切出功能分支1、功能分支2、支干分支1和支干分支2,功能分支1与支干分支1对应,功能分支2与支干分支2对应。此时,创建合并请求接口产生两个预合并请求,根据预合并请求1,使得经过代码开发后的功能分支1与支干分支1进行预合并处理,得到预合并分支1;根据预合并请求2,使得经过代码开发后的功能分支2与支干分支2进行预合并处理,得到预合并分支2。
在完成预合并处理后,判断每个预合并处理过程是否成功,判断标准是预合并分支中的代码与主干分支的代码是否存在代码冲突。代码冲突是指开发后的功能分支与支干分支进行预合并得到的预合并分支的代码与主干分支的代码不一致。
如果某个开发人员在是基于旧主干分支进行功能开发,而另一开发人员是基于新主干分支进行功能开发,此时,由于两个人同时改变同一部分的代码,则基于旧主干分支进行功能开发的代码与主干分支的代码不一致,同时,业务系统无法确定应将哪一开发人员进行代码开发的功能分支合并至主干分支,导致代码冲突。
如果预合并分支的代码出现代码冲突,则确定当前功能分支的预合并处理过程失败,开发人员需对当前功能分支进行代码修改,解决代码冲突问题后再与支干分支进行预合并。
S3、在预合并处理成功后,对每个预合并分支进行编译处理。
在代码开发后的功能分支与支干分支经过预合并处理得到预合并分支后,如果判断出预合并处理过程成功,未出现代码冲突现象,则执行后续步骤,即对预合并分支进行编译处理。
开发人员的功能分支通过预合并后,此时的预合并分支代码就是集合了主干分支和功能分支的最新代码。再对预合并分支进行编译,确保最终合并后主干分支的稳定性。本实施例中,利用Jenkins进行编译,Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具。
图4为本发明实施例提供的编译处理的方法流程图。参见图4,具体地,按照下述步骤在预合并处理成功后,对每个预合并分支进行编译处理:
S31、调用持续集成工具接口,基于每个预合并分支,创建对应的编译任务。
S32、根据每个编译任务,对对应的预合并分支进行编译。
Jenkins(持续集成工具)包括持续集成工具接口,在对预合并分支进行编译时,先调用持续集成工具接口,依赖预合并分支创建一个编译任务。每个预合并分支对应一个编译任务,避免多个预合并分支相互之间的编译过程相互影响。
启动创建的每个编译任务,以对每个预合并分支进行编译。具体的编译方法可参照现有的编译过程,本实施例不做具体限定。
S33、按照预定时长,查询每个编译处理过程的编译结果。
S34、在接收到的编译结果为编译成功时,确定对应的预合并分支的编译过程结束。
在对预合并分支进行编译过程中,定时轮询编译处理过程的编译结果。本实施例中,设定预定时长,每隔预定时长,查询一次编译结果。
本实施例提供的业务系统,按照预定时长查询编译结果,如果编译成功,则返回“编译成功”提示,以提示开发人员当前预合并分支的编译处理过程成功;如果编译失败,则返回“编译失败”提示,以提示开发人员当前预合并分支的编译处理过程失败。在编译失败时,开发人员需要进行重置,以修改代码后从预合并处理过程(步骤S2)重新执行后续步骤。
本实施例中,基于代码开发后的功能分支与支干分支的预合并,以及,支干分支具有与主干分支相同的代码特性,通过对预合并分支进行编译,使得可以提前验证代码开发后的功能分支与主干分支进行合并后的代码稳定性,以保证功能分支在与主干分支最终合并时的代码稳定。
S4、在编译处理成功后,将编译后的预合并分支与主干分支进行集成合并,其中,后一编译后的预合并分支在前一所述编译后的预合并分支的集成合并处理成功之后再进行集成合并。
编译处理成功后,再进行集成合并过程,即将编译后的预合并分支再合并到主干分支中,完成代码开发过程。
本发明实施例提供的代码开发方法,采用并行开发方法,即多个功能分支可以由不同的开发人员同时进行代码开发。但是,为了确保每次预合并分支与主干分支的代码一致,避免出现代码冲突,本实施例中,在将编译后的预合并分支合并到主干分支时,采用串行的合并方式,即每次合并时仅允许一个预合并分支与主干分支进行集成合并,在当前预合并分支与主干分支集成合并完成之后,再进行下一个预合并分支与主干分支的集成合并,以保证每次最终合并到主干分支的代码一致性。
参见图2,先进行编译后的预合并分支1与主干分支的集成合并,在该集成合并过程结束后,再进行编译后的预合并分支2与主干分支的集成合并过程。
图5为本发明实施例提供的集成合并的方法流程图。参见图5,本实施例中,按照下述步骤在编译处理成功后,将编译后的预合并分支与主干分支进行集成合并:
S41、调用创建合并请求接口,根据编译后的预合并分支和主干分支,创建集成合并请求。
S42、根据集成合并请求,调用合并接口,将编译后的预合并分支和主干分支进行集成合并。
业务系统中的代码开发程序调用Gitlab中的创建合并请求接口,创建多个集成合并请求。每个集成合并请求对应主干分支和一个编译后的预合并分支,集成合并请求用于实现主干分支与编译后的预合并分支的集成合并过程。
在生成集成合并请求后,业务系统中的代码开发程序调用Gitlab中的合并接口,将主干分支与编译后的预合并分支进行集成合并处理,完成当前代码开发过程。
S43、在当前编译后的预合并分支和主干分支的集成合并处理成功之后,进行下一编译后的预合并分支和主干分支的集成合并处理过程。
执行串行的合并过程,在完成当前编译后的预合并分支与主干分支的集成合并成功后,再进行下一个编译后的预合并分支与主干分支的集成合并过程。而下一个编译后的预合并分支的获得可采用步骤S1至S3的过程,而切出支干分支的主干分支,可为前一集成合并后得到的主干分支,使得经过一次集成合并后的主干分支中的代码为最新的代码,即主干分支为新主干分支,避免后一预合并分支是功能分支与基于旧主干分支创建的支干分支进行预合并而成的分支,这样可以保证每个代码开发后的功能分支可以与最新的支干分支进行预合并,进而能够保证功能分支与最终的主干分支合并时不会出现代码冲突,保证代码稳定性。
S44、调用删除分支接口,分别将每一个预合并分支删除。
在完成当前预合并分支与主干分支的合并后,预合并分支中的代码与主干分支中的代码融合,预合并分支中不再具有代码。为避免集成合并后的预合并分支干扰主干分支的开发过程,本实施例中,调用Gitlab中的删除分支接口,由删除分支接口将进行集成合并后的预合并分支删除。
在多人的代码开发过程中,上述过程中,在编译与集成合并两个过程中,极易出现代码冲突(集成合并失败)和代码错误(编译失败)导致执行失败的情况。如果当前代码开发过程因代码冲突或代码错误而执行失败,由于下一开发人员的开始执行开发的标志是前一开发人员对应的编译后的预合并分支与主干分支进行集成合并成功之后,因此,若当前开发人员的开发过程无法返回结束标志,则无法通知下一开发人员执行相应开发过程,导致代码开发过程在预合并状态卡住,影响后续合并工作。
在此种情况下,本实施例还提供一种代码开发方法,可以通过重置,使得代码开发状态回退到初始状态,重新修改完代码后再进行预合并。代码开发状态包括预合并处理状态和集成合并状态。
具体地,该方法还包括:
S501、如果编译处理不成功,或者,集成合并处理不成功,生成重置指令。
S502、根据重置指令,调用持续集成工具接口,删除编译过程创建的编译任务,或者,调用删除分支接口,删除预合并分支,以将代码开发状态回退到初始状态。
如果在编译过程返回的编译结果是“编译失败”,则由业务系统生成重置指令;或者,在集成合并过程的不成功,也由业务系统生成重置指令。重置指令的生成可由重置按钮实现,重置按钮配置在业务系统的代码开发程序的页面上,在编译过程或集成合并过程不成功时,点击重置按钮,生成重置指令。
在编译过程中,如果需要进行重置,则根据重置指令,调用持续集成工具接口,将当前编译任务删除,使得代码开发状态由编译状态回退到预合并前的状态(初始状态)。在集成合并过程中,如果需要进行重置,则根据重置指令,调用Gitlab中的删除分支接口,将编译后的预合并分支删除,使得代码开发状态由集成合并状态回退到预合并前的状态(初始状态)。
预合并前的状态(初始状态)是指代码开发后的功能分支还未与支干分支进行预合并的状态。将代码开发状态回退到预合并前的状态,可对功能分支重新进行代码修改,由修改代码后的功能分支再与支干分支进行预合并处理,并执行后续编译和集成合并的过程。
由以上技术方案可知,本发明实施例提供的一种代码开发方法,包括:从代码开发程序中的主干分支切出一一对应的至少一个功能分支和至少一个支干分支,支干分支与主干分支具有相同的特性。将每个代码开发后的功能分支与对应的支干分支进行预合并处理,得到预合并分支,提前验证将功能分支合并到主干分支之后是否会出现代码冲突。在预合并处理成功后,对每个预合并分支进行编译处理,以预先验证功能分支合并到主干分支的稳定性;在编译处理成功后,将编译后的预合并分支与主干分支进行集成合并,集成合并为串行的合并方式,即每次集成合并时只允许一个预合并分支与主干分支进行合并,使得后一预合并分支可以与最新的主干分支进行集成合并,以确保每次的预合并分支与主干分支一致,保证每次最终的主干分支的正确性。可见,本发明提供的方法,可以通过预合并方式提前解决功能分支与主干分支合并后可能出现的代码冲突问题,以及,可以通过对预合并分支进行编译的方式提前验证功能分支合并到主干分支的稳定性问题,进而保证多人进行代码开发时的稳定性。
图6为本发明实施例提供的代码开发装置的结构框图。
如图6所示,本申请提供了一种代码开发装置,用于执行图1所示的代码开发方法,该装置包括:代码开发分支获取模块10,用于获取从代码开发程序中的主干分支切出的至少一个功能分支和至少一个支干分支,所述功能分支和支干分支一一对应,所述支干分支的代码与所述主干分支中的部分代码相同;预合并处理模块20,用于将每一个代码开发后的功能分支和对应的所述支干分支进行预合并处理,得到多个预合并分支;编译处理模块30,用于在预合并处理成功后,对每个所述预合并分支进行编译处理;集成合并处理模块40,用于在编译处理成功后,将所述编译后的预合并分支与主干分支进行集成合并,其中,后一所述编译后的预合并分支在前一所述编译后的预合并分支的集成合并处理成功之后再进行集成合并。
进一步地,所述预合并处理模块20,包括:预合并请求创建单元,用于调用创建合并请求接口,根据所述代码开发后的功能分支和对应的支干分支,创建预合并请求;预合并处理单元,用于根据所述预合并请求,调用合并接口,将所述代码开发后的功能分支和对应的支干分支进行预合并处理,得到多个预合并分支。
进一步地,所述编译处理模块30,包括:编译任务创建单元,用于调用持续集成工具接口,基于每个所述预合并分支,创建对应的编译任务;编译单元,用于根据每个所述编译任务,对对应的所述预合并分支进行编译;编译结果查询单元,用于按照预定时长,查询每个所述编译处理过程的编译结果;编译过程结束确定单元,用于在接收到的编译结果为编译成功时,确定对应的所述预合并分支的编译过程结束。
进一步地,所述集成合并处理模块40,包括:集成合并请求创建单元,用于调用创建合并请求接口,根据所述编译后的预合并分支和主干分支,创建集成合并请求;集成合并单元,用于根据所述集成合并请求,调用合并接口,将编译后的预合并分支和主干分支进行集成合并;下一集成合并触发单元,用于在当前所述编译后的预合并分支和主干分支的集成合并处理成功之后,进行下一所述编译后的预合并分支和主干分支的集成合并处理过程;分支删除单元,用于调用删除分支接口,分别将每一个所述预合并分支删除。
进一步地,还包括:重置指令生成模块,用于在所述编译处理不成功,或者,所述集成合并处理不成功,生成重置指令;删除模块,用于根据所述重置指令,调用持续集成工具接口,删除编译过程创建的编译任务,或者,调用删除分支接口,删除预合并分支,以将代码开发状态回退到初始状态。
图7为本发明实施例提供的电子设备的硬件结构示意图。如图7所示,本申请提供了一种电子设备,包括:存储器601,用于存储程序指令;处理器602,用于调用并执行所述存储器中的程序指令,以实现前述实施例所述的代码开发方法。
本实施例中,处理器602和存储器601可通过总线或其他方式连接。处理器可以是通用处理器,例如中央处理器、数字信号处理器、专用集成电路,或者被配置成实施本发明实施例的一个或多个集成电路。存储器可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘。
本申请提供了一种计算机存储介质,所述计算机存储介质中存储有计算机程序,当代码开发装置的至少一个处理器执行所述计算机程序时,代码开发装置执行前述实施例所述的代码开发方法。
所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:random access memory,简称:RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于代码开发装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本发明实施方式并不构成对本发明保护范围的限定。

Claims (12)

1.一种代码开发方法,其特征在于,包括以下步骤:
获取从代码开发程序中的主干分支切出的至少一个功能分支和至少一个支干分支,所述功能分支和支干分支一一对应,所述支干分支的代码与所述主干分支中的部分代码相同;
将每一个代码开发后的功能分支和对应的所述支干分支进行预合并处理,得到多个预合并分支,其中,在执行预合并过程时,需要在前一个功能分支与对应的支干分支预合并之后,再进行下一个功能分支与对应的支干分支的预合并,即下一个支干分支是基于前一个预合并分支与主干分支经过集成合并后得到的新主干分支创建而成;
在预合并处理成功后,对每个所述预合并分支进行编译处理;
在编译处理成功后,将所述编译后的预合并分支与主干分支进行集成合并,其中,后一所述编译后的预合并分支在前一所述编译后的预合并分支的集成合并处理成功之后再进行集成合并。
2.根据权利要求1所述的方法,其特征在于,所述将每一个代码开发后的功能分支和对应的所述支干分支进行预合并处理,得到多个预合并分支,包括:
调用创建合并请求接口,根据所述代码开发后的功能分支和对应的支干分支,创建预合并请求;
根据所述预合并请求,调用合并接口,将所述代码开发后的功能分支和对应的支干分支进行预合并处理,得到多个预合并分支。
3.根据权利要求1所述的方法,其特征在于,所述在预合并处理成功后,对每个所述预合并分支进行编译处理,包括:
调用持续集成工具接口,基于每个所述预合并分支,创建对应的编译任务;
根据每个所述编译任务,对对应的所述预合并分支进行编译;
按照预定时长,查询每个所述编译处理过程的编译结果;
在接收到的编译结果为编译成功时,确定对应的所述预合并分支的编译过程结束。
4.根据权利要求1所述的方法,其特征在于,所述在编译处理成功后,将所述编译后的预合并分支与主干分支进行集成合并,包括:
调用创建合并请求接口,根据所述编译后的预合并分支和主干分支,创建集成合并请求;
根据所述集成合并请求,调用合并接口,将编译后的预合并分支和主干分支进行集成合并;
在当前所述编译后的预合并分支和主干分支的集成合并处理成功之后,进行下一所述编译后的预合并分支和主干分支的集成合并处理过程;
调用删除分支接口,分别将每一个所述预合并分支删除。
5.根据权利要求1所述的方法,其特征在于,还包括:
如果所述编译处理不成功,或者,所述集成合并处理不成功,生成重置指令;
根据所述重置指令,调用持续集成工具接口,删除编译过程创建的编译任务,或者,调用删除分支接口,删除预合并分支,以将代码开发状态回退到初始状态。
6.一种代码开发装置,其特征在于,包括:
代码开发分支获取模块,用于获取从代码开发程序中的主干分支切出的至少一个功能分支和至少一个支干分支,所述功能分支和支干分支一一对应,所述支干分支的代码与所述主干分支中的部分代码相同;
预合并处理模块,用于将每一个代码开发后的功能分支和对应的所述支干分支进行预合并处理,得到多个预合并分支,其中,在执行预合并过程时,需要在前一个功能分支与对应的支干分支预合并之后,再进行下一个功能分支与对应的支干分支的预合并,即下一个支干分支是基于前一个预合并分支与主干分支经过集成合并后得到的新主干分支创建而成;
编译处理模块,用于在预合并处理成功后,对每个所述预合并分支进行编译处理;
集成合并处理模块,用于在编译处理成功后,将所述编译后的预合并分支与主干分支进行集成合并,其中,后一所述编译后的预合并分支在前一所述编译后的预合并分支的集成合并处理成功之后再进行集成合并。
7.根据权利要求6所述的装置,其特征在于,所述预合并处理模块,包括:
预合并请求创建单元,用于调用创建合并请求接口,根据所述代码开发后的功能分支和对应的支干分支,创建预合并请求;
预合并处理单元,用于根据所述预合并请求,调用合并接口,将所述代码开发后的功能分支和对应的支干分支进行预合并处理,得到多个预合并分支。
8.根据权利要求6所述的装置,其特征在于,所述编译处理模块,包括:
编译任务创建单元,用于调用持续集成工具接口,基于每个所述预合并分支,创建对应的编译任务;
编译单元,用于根据每个所述编译任务,对对应的所述预合并分支进行编译;
编译结果查询单元,用于按照预定时长,查询每个所述编译处理过程的编译结果;
编译过程结束确定单元,用于在接收到的编译结果为编译成功时,确定对应的所述预合并分支的编译过程结束。
9.根据权利要求6所述的装置,其特征在于,所述集成合并处理模块,包括:
集成合并请求创建单元,用于调用创建合并请求接口,根据所述编译后的预合并分支和主干分支,创建集成合并请求;
集成合并单元,用于根据所述集成合并请求,调用合并接口,将编译后的预合并分支和主干分支进行集成合并;
下一集成合并触发单元,用于在当前所述编译后的预合并分支和主干分支的集成合并处理成功之后,进行下一所述编译后的预合并分支和主干分支的集成合并处理过程;
分支删除单元,用于调用删除分支接口,分别将每一个所述预合并分支删除。
10.根据权利要求6所述的装置,其特征在于,还包括:
重置指令生成模块,用于在所述编译处理不成功,或者,所述集成合并处理不成功,生成重置指令;
删除模块,用于根据所述重置指令,调用持续集成工具接口,删除编译过程创建的编译任务,或者,调用删除分支接口,删除预合并分支,以将代码开发状态回退到初始状态。
11.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,以实现权利要求1~5任一项所述的代码开发方法。
12.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序,当代码开发装置的至少一个处理器执行所述计算机程序时,代码开发装置执行权利要求1~5任一项所述的代码开发方法。
CN201911250710.9A 2019-12-09 2019-12-09 一种代码开发方法、装置、电子设备和计算机存储介质 Active CN111078274B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911250710.9A CN111078274B (zh) 2019-12-09 2019-12-09 一种代码开发方法、装置、电子设备和计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911250710.9A CN111078274B (zh) 2019-12-09 2019-12-09 一种代码开发方法、装置、电子设备和计算机存储介质

Publications (2)

Publication Number Publication Date
CN111078274A CN111078274A (zh) 2020-04-28
CN111078274B true CN111078274B (zh) 2023-05-16

Family

ID=70313371

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911250710.9A Active CN111078274B (zh) 2019-12-09 2019-12-09 一种代码开发方法、装置、电子设备和计算机存储介质

Country Status (1)

Country Link
CN (1) CN111078274B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113688028B (zh) * 2020-05-19 2023-08-15 成都鼎桥通信技术有限公司 代码提交方法和装置
CN113485913B (zh) * 2021-06-10 2023-04-07 上海百胜软件股份有限公司 一种分支管理方法、系统、设备和存储介质
CN113590485A (zh) * 2021-08-02 2021-11-02 瀚高基础软件股份有限公司 一种多管理系统集成方法及计算机可读存储介质
CN113656261B (zh) * 2021-08-10 2022-07-01 上海百胜软件股份有限公司 代码异常处理方法、系统和存储介质
CN117850789A (zh) * 2022-09-30 2024-04-09 中兴通讯股份有限公司 版本发布方法、电子设备和计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103220163A (zh) * 2012-01-19 2013-07-24 阿里巴巴集团控股有限公司 配置信息的更新方法和系统
CN109240667A (zh) * 2018-09-14 2019-01-18 五八有限公司 一种应用软件的开发方法、装置、存储介质及终端

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9575764B1 (en) * 2013-03-15 2017-02-21 Atlassian Pty Ltd Synchronizing branches of computer program source code
CN108334319A (zh) * 2018-03-15 2018-07-27 上海商米科技有限公司 代码开发方法、装置、数据处理方法及电子设备
CN109542415B (zh) * 2018-11-13 2022-05-10 五八同城信息技术有限公司 支持应用程序并行研发的代码合并方法及相关设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103220163A (zh) * 2012-01-19 2013-07-24 阿里巴巴集团控股有限公司 配置信息的更新方法和系统
CN109240667A (zh) * 2018-09-14 2019-01-18 五八有限公司 一种应用软件的开发方法、装置、存储介质及终端

Also Published As

Publication number Publication date
CN111078274A (zh) 2020-04-28

Similar Documents

Publication Publication Date Title
CN111078274B (zh) 一种代码开发方法、装置、电子设备和计算机存储介质
US20190324772A1 (en) Method and device for processing smart contracts
CN106339312B (zh) Api测试方法和系统
CN107733847B (zh) 平台登录网站方法、装置、计算机设备以及可读存储介质
CN107391104B (zh) 一种客户端与react native代码的更新依赖管理方法、装置及系统
CN110941528B (zh) 一种基于故障的日志埋点设置方法、装置及系统
CN107678748B (zh) 一种源代码文件编译方法及装置
CN114048701B (zh) 网表eco方法、装置、设备及可读存储介质
CN109977008B (zh) 一种应用程序依赖的js代码与原生库兼容的方法及终端
CN111522577A (zh) 一种依赖包版本管理方法、装置、设备和存储介质
CN112395202B (zh) 接口自动化测试方法、装置、计算机设备和存储介质
CN111538659B (zh) 业务场景的接口测试方法、系统、电子设备和存储介质
CN115391228A (zh) 精准测试方法、装置、设备及介质
CN116257438A (zh) 接口测试用例的更新方法及相关设备
CN106909434B (zh) 可执行程序中未定义函数的检测方法及装置
CN113721948A (zh) 一种数据库升级方法、系统及存储介质
CN109101408B (zh) 联调环境中业务可用性的检测方法和装置
CN111124429B (zh) 持续交付方法和装置
CN111209197B (zh) 应用程序持续集成测试方法、系统、设备和存储介质
CN110221952B (zh) 业务数据的处理方法及装置、业务数据处理系统
CN109240906B (zh) 数据库配置信息适配方法、装置、计算机设备和存储介质
CN111782226A (zh) 一种直捷安装安卓应用的方法、系统、设备及介质
CN112882720B (zh) 一种编译方法及装置
CN113946333B (zh) 一种移动端逻辑脚本执行方法及装置
CN112379918B (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
GR01 Patent grant
GR01 Patent grant