CN110825427B - 一种代码管理方法、装置、服务器及存储介质 - Google Patents
一种代码管理方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110825427B CN110825427B CN201910965761.3A CN201910965761A CN110825427B CN 110825427 B CN110825427 B CN 110825427B CN 201910965761 A CN201910965761 A CN 201910965761A CN 110825427 B CN110825427 B CN 110825427B
- Authority
- CN
- China
- Prior art keywords
- code
- code sets
- sets
- construction
- conflict
- 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
Links
- 238000007726 management method Methods 0.000 title claims abstract description 29
- 238000010276 construction Methods 0.000 claims abstract description 304
- 238000004458 analytical method Methods 0.000 claims abstract description 102
- 238000000034 method Methods 0.000 claims abstract description 73
- 238000012545 processing Methods 0.000 claims description 45
- 238000001514 detection method Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 7
- 239000000725 suspension Substances 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种代码管理方法、装置、服务器及存储介质,该方法可以包括:从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,每个代码集包括相同时间点提交的至少一个代码文件;根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,所述第一组代码集包括冲突分析结果指示无冲突的代码集;根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,所述第二组代码集包括构建成功的代码集;将所述第二组代码集提交至指定代码仓库。采用本申请,可以提高代码仓库的代码质量,进而提高代码管理效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种代码管理方法、装置、服务器及存储介质。
背景技术
随着科学技术的发展,在代码开发的过程中,可以使用如svn、git、subversion等代码管理工具来进行代码管理。通常来说,相应开发人员在本地开发代码后,可以通过代码管理工具将开发的代码提交至相应代码仓库。当开发人员为多个时,由于不同开发人员提交的代码会互相影响,并且不同开发人员提交的代码的质量也参差不齐,这就导致代码仓库的代码质量无法得到保障,进而降低了代码管理效率。
发明内容
本申请实施例提供了一种代码管理方法、装置、服务器及存储介质,可以提高代码仓库的代码质量,进而提高代码管理效率。
第一方面,本申请实施例提供了一种代码管理方法,包括:
从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,每个代码集包括相同时间点提交的至少一个代码文件;
根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,所述第一组代码集包括冲突分析结果指示无冲突的代码集;
根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,所述第二组代码集包括构建成功的代码集;
将所述第二组代码集提交至指定代码仓库。
可选地,所述根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,包括:
对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果;
根据所述每个代码集的冲突分析结果,从所述预设数量个代码集中确定出冲突分析结果指示无冲突的代码集;
将所述冲突分析结果指示无冲突的代码集确定为第一组代码集。
可选地,所述对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果,包括:
检测所述预设数量个代码集中的目标代码集与目标版本的代码是否存在冲突;所述目标代码集为当前未被检测的至少一个代码集中提交时间最早的代码集;
当所述目标代码集与所述目标版本的代码不存在冲突时,得到所述目标代码集的指示无冲突的冲突分析结果;
对所述目标代码集和所述目标版本的代码进行合并处理,得到下一版本的代码,将所述下一版本的代码作为所述目标版本的代码重复执行冲突检测的步骤,直到得到所述预设数量个代码集中每个代码集的冲突分析结果。
可选地,所述根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,包括:
对所述第一组代码集进行构建预测,得到多个构建预测结果,所述多个构建预测结果中每个构建预测结果指示的一组代码集为预测构建成功的一组代码集;
对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理;所述目标构建预测结果指示的一组代码集未进行过构建处理;
若对所述目标构建预测结果指示的一组代码集构建成功,则将所述目标构建预测结果指示的一组代码集确定为第二组代码集;
若对所述目标构建预测结果指示的一组代码集构建失败,则重复执行对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理的步骤,直到确定出第二组代码集。
可选地,对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理,包括:
当所述目标构建预测结果包括指定数量个构建预测结果时,对所述指定数量个构建预测结果中每个构建预测结果指示的一组代码集进行并行构建处理;
所述若对所述目标构建预测结果指示的一组代码集构建成功,则将所述目标构建预测结果指示的一组代码集确定为第二组代码集,包括:
若对所述指定数量个构建预测结果中的一个构建预测结果指示的一组代码集构建成功,则将所述一个构建预测结果指示的一组代码集确定为第二组代码集;
若对所述指定数量个构建预测结果中的至少两个构建预测结果指示的一组代码集构建成功,则将所述至少两个构建预测结果中优先级最高的构建预测结果指示的一组代码集确定为第二组代码集。
可选地,在所述根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集之后,并在所述根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集之前,所述方法还包括:
将所述第一组代码集写入无冲突队列,并从所述预设数量个代码集中确定出第三组代码集,将所述第三组代码集写入结果序列包括的冲突列表;所述第三组代码集包括冲突分析结果指示冲突的代码集;
在所述根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集之后,并在所述将所述第二组代码集提交至指定代码仓库之前,所述方法还包括:
将所述第二组代码集写入结果序列包括的成功列表,并将对所述第一组代码集进行构建处理得到的第四组代码集写入结果序列包括的失败列表;所述第四组代码集包括构建失败的代码集。
可选地,所述方法还包括:
在将所述第一组代码集写入无冲突队列的情况下,将所述第一组代码集的提交状态记录为挂起状态;
在将所述第三组代码集写入结果序列包括的冲突列表的情况下,将所述第三组代码集的提交状态记录为挂起冲突状态;
在将所述第二组代码集写入结果序列包括的成功列表,并将对所述第一组代码集进行构建处理得到的第四组代码集写入结果序列包括的失败列表中的情况下,将所述第二组代码集的提交状态和所述第四组代码集的提交状态均记录为挂起状态;
在将所述第二组代码集提交至指定代码仓库的情况下,将所述第二组代码集的提交状态更新为提交成功状态,所述第三组代码集的提交状态记录更新为冲突状态,将所述第四组代码集的提交状态记录更新为提交失败状态。
第二方面,本申请实施例提供了一种代码管理装置,包括:
读取单元,用于从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,每个代码集包括相同时间点提交的至少一个代码文件;
确定单元,用于根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,所述第一组代码集包括冲突分析结果指示无冲突的代码集;
构建单元,用于根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,所述第二组代码集包括构建成功的代码集;
提交单元,用于将所述第二组代码集提交至指定代码仓库。
第三方面,本申请实施例提供了一种服务器,包括处理器、存储器和输出设备,所述处理器、所述存储器和所述输出设备之间相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如第一方面所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如第一方面所述的方法。
综上所述,服务器可以从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,并根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集;服务器还可以根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集以提交至指定代码仓库,从而提高指定代码仓库的代码质量,进而提高代码管理效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种代码提交过程的示意图;
图2是本申请实施例提供的另一种代码提交过程的示意图;
图3是本申请实施例提供的一种代码管理方法的流程示意图;
图4是本申请实施例提供的一种冲突分析过程的示意图;
图5是本申请实施例提供的一种构建预测过程的示意图;
图6是本申请实施例提供的一种构建处理过程的示意图;
图7是本申请实施例提供的另一种构建处理过程的示意图;
图8是本申请实施例提供的另一种代码管理方法的流程示意图;
图9是本申请实施例提供的一种代码管理装置的结构示意图;
图10是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
为了解决现有技术的问题,本申请实施例提供了一种代码管理方法,能够从预设的提交队列中读取预设数量个代码集,该提交队列包括多个时间点提交的代码集,每个代码集包括相同时间点提交的至少一个代码文件;根据预设的冲突分析规则,从该预设数量个代码集中确定出第一组代码集,该第一组代码集包括冲突分析结果指示无冲突的代码集;根据预设的构建规则,对该第一组代码集进行构建处理,得到第二组代码集,该第二组代码集包括构建成功的代码集;将该第二组代码集提交至指定代码仓库。采用该过程,能够有效地提高指定代码仓库的代码质量,进而提高代码管理效率。
其中,本申请实施例提及的代码管理方法可以由服务器执行,该服务器可以为一个服务器或服务器集群。在一个应用场景中,该服务器可以为终端与代码仓库服务器之间的中间设备,能够与终端和代码仓库服务器分别建立通信。再一个应用场景中,该服务器还可以为代码仓库服务器。
其中,本申请实施例的提交队列Commit Queue,是指用于保存多个时间点提交的代码集的队列。该提交队列可以包括多个时间点提交的代码集。如图1所示,提交队列包括在时间点T1提交的代码集C1,在时间点T2提交的代码集C2,在时间点T3提交的代码集C3。
在一个实施例中,该多个时间点提交的代码集,可以包括在相同时间点提交的至少两个代码集。在一个实施例中,代码集可以包括相同时间点提交的至少一个代码文件。代码文件是指记录了至少一条代码的文件。可选地,该代码文件包括的代码可以包括基于指定代码仓库的代码进行更新处理(如修改后)后得到的代码。该指定代码仓库为该预设数量个代码集准备提交的代码仓库。
其中,本申请实施例提及的第一组代码集包括冲突分析结果指示无冲突的代码集。例如,参见图2,该第一组代码集可以包括代码集C1和代码集C3。本申请实施例提及的第三组代码集可以包括冲突分析结果指示有冲突的代码集。例如,参见图2,该第三组代码集包括代码集C2。在一个实施例中,冲突检测过程可以是由服务器包括的冲突分析器来执行的。
在一个实施例中,在所述根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集之后,并在所述根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集之前,可以将所述第一组代码集写入无冲突队列,并从所述预设数量个代码集中确定出第三组代码集,将所述第三组代码集写入冲突列表,如结果序列包括的Conflict List冲突列表。例如,参见图2,无冲突队列Non-conflict Queue包括代码集C1和代码集C3,冲突列表包括代码集C2。在一个实施例中,可以仅将第一组代码集包括的各代码集的标识写入无冲突队列中,并可以仅将该第三组代码集包括的各代码集的标识写入结果序列包括的冲突列表中。
在一个实施例中,前述构建处理的过程,可以是指代码持续集成的过程。该构建处理的过程包括但不限于以下至少一项:代码编译、单元测试、代码扫描。在一个实施例中,该构建处理的过程,可以是由服务器包括的构建引擎Build Engine来执行。在一个实施例中,该构建引擎可以支持并发的构建任务。
在一个实施例中,在所述根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集之后,并在所述将所述第二组代码集提交至指定代码仓库之前,可以将所述第二组代码集写入成功列表,如结果序列包括的成功列表,并将对所述第一组代码集进行构建处理得到的第四组代码集写入失败列表,如结果序列包括的失败列表;所述第四组代码集包括构建失败的代码集。例如,参见图2,成功列表可以包括代码集C1,失败列表可以包括代码集C3。在一个实施例中,可以仅将所述第二组代码集包括的各代码集的标识写入结果序列包括的成功列表,仅将所述第四组代码集包括的各代码集的标识写入结果序列包括的失败列表。
其中,本申请实施例提及的结果序列可以是指包括前述冲突列表、成功列表、失败列表中的任一项或多项的序列。该序列可以是一种数据结构,如列表。本申请实施例提及的代码集的标识可以包括第一标识和/或第二标识,其中第一标识是由服务器为相应代码集设置的标识,第二标识是指相应代码集自身携带的标识。通过代码集的标识,可以快速索引出相应代码集。
其中,本申请实施例提及的提交状态是指代码集当前所处的状态。用户可以在服务器上查询相应代码集的提交状态。例如,服务器可以响应目标用户对应的终端发送的对目标代码集的状态查询请求,确定该目标代码集的提交状态,并将该确定出的提交状态返回至目标终端。引入状态,可以方便用户了解代码集当前所处的处理阶段,并可以达到及时响应用户的目的。其中,该提交状态,根据代码集所处的处理阶段的不同,可以分为以下几种:挂起Pending状态、挂起冲突Pending-Conflict状态、提交成功Suceess状态、提交失败Fail状态、冲突Conflict状态。
请参阅图3,为本申请实施例提供的一种代码管理方法的流程示意图。该方法可以应用于服务器。具体地,该方法可以包括以下步骤:
S301、从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,每个代码集包括相同时间点提交的至少一个代码文件。
本申请实施例中,服务器可以从预设的提交队列中读取预设数量个代码集,从而达到对代码集进行批量处理的目的,相较于现有技术逐个处理代码集,采用上述过程能够有效地提高对多个代码集的处理效率。
在一个实施例中,服务器可以每次接收到针对指定代码仓库的代码提交请求时,将该代码提交请求携带的对应时间点提交的代码集写入预设的提交队列中。
在一个实施例中,在将对应时间点提交的代码集写入预设的提交队列的情况下,可以将该代码集的提交状态记录为挂起状态。例如,参见图4,在将代码集C1、代码集C2、代码集C3写入提交队列的情况下,可以将代码集C1、代码集C2、代码集C3的提交状态记录为挂起状态。
在一个实施例中,服务器从预设的提交队列中读取预设数量个代码集,可以包括:服务器根据预设的提交队列中各个代码集的提交的时间点,从该提交队列中确定出最早提交的预设数量个代码集。例如,该提交队列包括代码集C1、代码集C2、代码集C3、代码集C4,服务器可以根据这4个代码集的提交的时间点,确定出最早提交的3个代码集:代码集C1、代码集C2、代码集C3。
在一个实施例中,服务器还可以为该预设数量个代码集中每个代码集设置第一标识,如编号。该过程可以是在执行步骤S101后执行的。其中,该预设数量个代码集中每个代码集的第一标识不同。在一个实施例中,当第一标识为编号时,上述为该预设数量个代码集中每个代码集设置第一标识的方式,可以是按照自增序列的方式为该预设数量个代码集中每个代码集设置编号。例如,可以按照自增序列的方式为代码集C1设置编号CommitNo#1,为代码集C2设置编号CommitNo#2,为代码集C3设置编号CommitNo#3。通过第一标识,可以方便服务器对每次提交的代码进行跟踪管理。
S302、根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,所述第一组代码集包括冲突分析结果指示无冲突的代码集。
具体地,服务器根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,可以包括:服务器对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果;服务器根据所述每个代码集的冲突分析结果,从所述预设数量个代码集中确定出冲突分析结果指示无冲突的代码集;服务器将所述冲突分析结果指示无冲突的代码集确定为第一组代码集。
在一个实施例中,服务器对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果,可以包括:服务器检测所述预设数量个代码集中的目标代码集与目标版本的代码是否存在冲突;所述目标代码集为当前未被检测的至少一个代码集中提交时间最早的代码集;当所述目标代码集与所述目标版本的代码不存在冲突时,服务器得到所述目标代码集的指示无冲突的冲突分析结果;服务器对所述目标代码集和所述目标版本的代码进行合并处理,得到下一版本的代码,将所述下一版本的代码作为所述目标版本的代码重复执行冲突检测的步骤,直到得到所述预设数量个代码集中每个代码集的冲突分析结果。其中,该目标版本的代码是指当前最新版本的代码。在一个实施例中,当所述目标代码集与所述目标版本的代码存在冲突时,服务器得到所述目标代码集的指示有冲突的冲突分析结果,并重复执行冲突检测的步骤,直到得到所述预设数量个代码集中每个代码集的冲突分析结果。其中,上述冲突检测的步骤是指检测所述预设数量个代码集中的目标代码集与目标版本的代码是否存在冲突的步骤。
例如,假设预设数量个代码集包括代码集C1、代码集C2和代码集C3。如图4所示,服务器可以检测代码集C1与指定仓库的代码Head是否存在冲突;当代码集C1和指定代码仓库的代码Head不存在冲突时,服务器得到代码集C1的指示无冲突的冲突分析结果;服务器对代码集C1和指定代码仓库的代码Head进行合并处理,得到第一版本的代码Head+C1。服务器检测代码集C2与第一版本的代码Head+C1是否存在冲突;当代码集C2与第一版本的代码Head+C1存在冲突时,服务器得到代码集C2的指示有冲突的冲突分析结果,并进一步判断代码集C3与第一版本的代码Head+C1是否存在冲突。当代码集C3与第一版本的代码Head+C1不存在冲突时,服务器得到代码集C3的指示无冲突的冲突分析结果。可选地,服务器还可以对代码集C3和该第一版本的代码Head+C1进行合并处理,得到第二版本的代码Head+C1+C3。
在一个实施例中,服务器还可以当所述目标代码集与所述目标版本的代码存在冲突时,得到所述目标代码集的至少有冲突的冲突分析结果;服务器重复执行上述冲突检测步骤,直到得到所述预设数量个代码集中每个代码集的冲突分析结果。
在一个实施例中,上述检测所述预设数量个代码集中的目标代码集与目标版本的代码是否存在冲突的方式,包括但不限于采用代码比对的方式、代码哈希值比对等等冲突检测方式,本申请实施例对其不做限定。
S303、根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,所述第二组代码集包括构建成功的代码集。
本申请实施例中,服务器可以根据预设的构建规则,对该第一组代码集进行构建处理,得到第二组代码集。采用该过程,达到了对代码集批量构建的目的,相较于现有技术逐个构建的方式,本申请实施例的方式更加高效。
在一个实施例中,该构建处理过程,可以大致分为:构建预测过程、基于构建预测结果的构建处理过程。其中,构建预测过程是指对所述第一组代码集进行构建预测,得到多个构建预测结果的过程。在一个实施例中,构建预测过程是指根据所述第一组代码集包括的各代码集的提交时间,对所述第一组代码集进行构建预测,得到多个构建预测结果的过程。基于构建预测结果的构建处理过程是指,基于该多个构建预测结果对该第一组代码集进行构建处理的过程。其中,该多个构建预测结果中每个构建预测结果指示的一组代码集为预测构建成功的一组代码集。其中,本申请实施例提及的提交时间与前述提及提交的时间点为相同意思。
在一个实施例中,服务器根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,可以包括:服务器对所述第一组代码集进行构建预测,得到多个构建预测结果,所述多个构建预测结果中每个构建预测结果指示的一组代码集为预测构建成功的一组代码集;服务器对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理;所述目标构建预测结果指示的一组代码集未进行过构建处理;若对所述目标构建预测结果指示的一组代码集构建成功,服务器则将所述目标构建预测结果指示的一组代码集确定为第二组代码集;若对所述目标构建预测结果指示的一组代码集构建失败,服务器则重复执行对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理的步骤,直到确定出第二组代码集。
在一个实施例中,服务器对所述第一组代码集进行构建预测,得到多个构建预测结果,可以包括:服务器根据所述指定仓库中的代码集以及所述第一组代码集进行组合结果推断,得到所述指定代码仓库中的代码与所述第一组代码集中的代码集(任一个或多个代码集)之间的多个组合结果;服务器将所述多个组合结果确定为多个构建预测结果。
在一个实施例中,服务器对所述第一组代码集进行构建预测,得到多个构建预测结果,可以包括:服务器结合指定代码仓库中的代码采用穷举法对所述第一组代码集包括的各代码集进行构建成功和构建失败预测,得到该第一组代码集对应的构建预测树形结构;该构建预测树形结构包括多个叶子节点,该多个叶子节点中每个叶子节点对应一个构建预测结果。在一个实施例中,当该第一组代码集包括n个代码集时,构建预测结果的数量可以为2n个。在一个实施例中,服务器可以结合指定代码仓库中的代码以及所述第一组代码集包括的各代码集的提交时间,采用穷举法对所述第一组代码集包括的各代码集进行构建成功和构建失败预测。
假设第一组代码集包括代码集C1、代码集C2、代码集C3,由图5所示的构建预测树形结构可以看出,该多个构建预测结果包括:构建预测结果Head+C1+C2+C3、构建预测结果Head+C1+C3、构建预测结果Head+C1+C2、构建预测结果Head+C1、构建预测结果Head+C2+C3、构建预测结果Head+C2、构建预测结果Head+C3、构建预测结果Head。由图5可以看出,服务器可以结合指定代码仓库中的代码Head以及第一组代码集中各代码集的提交时间依次对代码集C1、代码集C2、代码集C3进行构建成功和构建失败预测。其中,构建预测结果Head+C1+C2+C3所指示的一组代码集(包括代码集C1、代码集C2、代码集C3)为预测构建成功的一组代码集。构建预测结果Head+C1+C2+C3是在预测代码集C1和指定代码仓库中的代码Head能够构建成功、代码集C2与根据代码集C1和指定代码仓库中的代码Head合并得到的代码Head+C1能够构建成功、代码集C3与根据代码集C2和代码Head+C1合并得到的代码Head+C1+C2能够构建成功后得到的。相应地,构建预测结果Head+C1+C3、构建预测结果C1+C2、构建预测结果C1、构建预测结果C2+C3、构建预测结果C2、构建预测结果C3,可以参见对构建预测结果C1+C2+C3的说明,本申请实施例在此不做赘述。
在一个实施例中,当所述多个构建预测结果中的至少两个构建预测结果分别指示的一组代码集未进行过构建处理时,服务器可以根据所述至少两个构建预测结果中每个构建预测结果的优先级,从所述至少两个构建预测结果中选取优先级最高的构建预测结果作为目标构建预测结果。在一个实施例中,该至少两个构建预测结果中每个构建预测结果的优先级可以是根据所述构建预测结果的长度(例如长度越长优先级越高),或可以是根据所述构建预测结果指示的一组代码集中代码集的数量确定出的(例如,数量越多优先级越高),或可以是根据所述构建预测结果指示的一组代码集中代码集的数据量确定出的(例如,数据量越大优先级越高)。在一个实施例中,服务器还可以从所述至少两个构建预测结果中随机选取构建预测结果作为目标构建预测结果。
在一个实施例中,服务器对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理,可以包括:当所述目标构建预测结果包括指定数量个构建预测结果时,服务器对所述指定数量个构建预测结果中每个构建预测结果指示的一组代码集进行并行构建处理。例如,参见图5,当目标构建预测结果包括构建预测结果Head+C1+C2+C3和构建预测结果Head+C1+C3时,服务器可以对构建预测结果Head+C1+C2+C3所指示的一组代码集(包括代码集C1、代码集C2、代码集C3),以及构建预测结果Head+C1+C3所指示的一组代码集(包括代码集C1、代码集C3)进行并行构建处理。
在一个实施例中,若对所述目标构建预测结果指示的一组代码集构建成功,服务器则将所述目标构建预测结果指示的一组代码集确定为第二组代码集,包括:若对所述指定数量个构建预测结果中的一个构建预测结果指示的一组代码集构建成功,服务器则将所述一个构建预测结果指示的一组代码集确定为第二组代码集;若对所述指定数量个构建预测结果中的至少两个构建预测结果指示的一组代码集构建成功,服务器则将所述至少两个构建预测结果中优先级最高的构建预测结果指示的一组代码集确定为第二组代码集。例如,参见图6及图7,服务器当对构建预测结果Head+C1+C2+C3所指示的一组代码集(包括代码集C1、代码集C2、代码集C3),以及构建预测结果Head+C1+C3所指示的一组代码集(包括代码集C1、代码集C3)中的任一组代码集构建成功时,则将该组代码集确定为第二组代码集;服务器当这对两个构建预测结果分别指示的代码集都构建成功时,服务器可以将优先级更
高的构建预测结果Head+C1+C2+C3指示的一组代码集确定为第二组代码集。
在一个实施例中,服务器可以为所述多个构建预测结果中每个构建预测结果生成对应的构建任务。所述构建任务为对相应构建预测结果指示的一组代码集进行构建处理的任务。服务器对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理,可以包括:服务器执行所述多个构建预测结果中的目标构建预测结果对应的构建任务。当所述目标构建预测结果包括指定数量个构建预测结果时,服务器对所述指定数量个构建预测结果中每个构建预测结果指示的一组代码集进行并行构建处理,可以包括:服务器并行执行所述指定数量个构建预测结果中每个构建预测结果对应的构建任务。例如,参见图6及图7,服务器可以并行执行构建预测结果Head+C1+C2+C3对应的构建任务:Build#1Head+C1+C2+C3,以及构建预测结果Head+C1+C3对应的构建任务Build#2Head+C1+C3。
在一个实施例中,上述服务器执行所述多个构建预测结果中的目标构建预测结果对应的构建任务,可以是由如图7所示的构建进程,如预设的线程或预设的进程池来执行的。
在一个实施例中,服务器还可以当对目标构建预测结果指示的一组代码集构建成功时,停止构建处理过程。或,当所述目标构建预测结果包括指定数量个构建预测结果时,当对所述指定数量个构建预测结果中的优先级高的构建预测结果指示的一组代码集构建成功时,停止构建处理过程。通过上述过程,能够有效地减小不必要的构建开销。在一个实施例中,服务器还可以删除正在执行或未执行的其他构建任务。
在一个实施例中,服务器还可以在当对目标构建预测结果指示的一组代码集构建成功时,返回构建成功的提示信息至该组代码集中各代码集对应的终端。
S304、将所述第二组代码集提交至指定代码仓库。
在一个实施例中,服务器将所述第二组代码集提交至指定代码仓库,可以包括:服务器将所述第二组代码集提交至指定代码仓库对应的代码逻辑;或,服务器将所述第二组代码集提交至指定代码仓库对应的代码仓库服务器。
在一种可选的实施方式中,服务器可以在执行步骤S301和步骤S302后,直接将第一组代码集提交至指定代码仓库,而无需执行步骤S303和步骤S304。直接将第一组代码集提交至指定代码仓库,可以减少提交至指定仓库中的代码集之间冲突的概率。
可见,在图3所示的实施例中,服务器可以从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,并根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集;服务器还可以根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集以提交至指定代码仓库,从而提高指定代码仓库的代码质量,进而提高代码管理效率。
请参阅图8,为本申请实施例中提供的一种代码管理方法的流程示意图。该方法可以应用于服务器。具体地,该方法可以包括如下步骤:
S801、从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,每个代码集包括相同时间点提交的至少一个代码文件;
S802、根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,所述第一组代码集包括冲突分析结果指示无冲突的代码集;
其中,步骤S801-步骤S802可参见图3实施例中的步骤S301-步骤S302,本申请实施
例在此不做赘述。
S803、将所述第一组代码集写入无冲突队列,并从所述预设数量个代码集中确定出第三组代码集,将所述第三组代码集写入结果序列包括的冲突列表。
本申请实施例中,服务器可以将第一组代码集写入无冲突队列,并可以该预设数量个代码集中确定出第三组代码集,并将该第三组代码集写入结果序列包括的冲突列表。其中,所述第三组代码集包括冲突分析结果指示冲突的代码集。通过无冲突队列、冲突列表能够便于掌握各代码集的冲突情况。并且,通过无冲突队列、冲突列表也可以方便相关用户进行提交状态信息。
例如,参见图2,服务器可以将代码集C1和代码集C3写入无冲突队列,并可以确定出冲突分析结果指示有冲突的代码集C2,将代码集C2写入结果序列的冲突列表。
S804、根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,所述第二组代码集包括构建成功的代码集。
S805、将所述第二组代码集写入结果序列包括的成功列表,并将对所述第一组代码集进行构建处理得到的第四组代码集写入结果序列包括的失败列表中。
本申请实施例中,服务器可以将所述第二组代码集写入结果序列包括的成功列表,并可以将对所述第一组代码集进行构建处理得到的第四组代码集写入结果序列包括的失败列表中。其中,所述第四组代码集包括构建失败的代码集。通过成功列表和失败列表,能够便于掌握各代码集的构建情况。并且,通过成功列表、失败列表也可以方便相关用户进行提交状态信息。
例如,参见图2,服务器可以将代码集C1写入结果序列包括的成功列表,并可以确定出构建失败的代码集C3,将代码集C3写入结果序列的失败列表。
S806、将所述第二组代码集提交至指定代码仓库。
其中,步骤S806可以参考图3实施例中的步骤S304,本申请实施例在此不做赘述。
可见,在图8所示的实施例中,服务器可以从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,并根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集;服务器可以将第一组代码集写入无冲突队列,并将从预设数量个代码集中确定出的第二组代码集写入结构序列包括的冲突列表;服务器还可以根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集;服务器可以将第二组代码集写入结构序列包括的成功列表,并将对所述第一组代码集进行构建处理确定出的第四组代码集写入结果序列包括的失败列表;服务器可以将第二组代码集提交至指定代码仓库,不仅便于掌握各代码集的处理阶段,还能提高指定代码仓库的代码质量,进而提高代码管理效率。
请参阅图9,为本申请实施例提供的一种代码管理装置的结构示意图。该装置可以应用于服务器。具体地,该装置可以包括:
读取单元901,用于从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,每个代码集包括相同时间点提交的至少一个代码文件;
确定单元902,用于根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,所述第一组代码集包括冲突分析结果指示无冲突的代码集;
构建单元903,用于根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,所述第二组代码集包括构建成功的代码集;
提交单元904,用于将所述第二组代码集提交至指定代码仓库。
在一种可选的实施方式中,确定单元902,具体用于对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果;根据所述每个代码集的冲突分析结果,从所述预设数量个代码集中确定出冲突分析结果指示无冲突的代码集;将所述冲突分析结果指示无冲突的代码集确定为第一组代码集。
在一种可选的实施方式中,确定单元902对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果,具体为检测所述预设数量个代码集中的目标代码集与目标版本的代码是否存在冲突;所述目标代码集为当前未被检测的至少一个代码集中提交时间最早的代码集;当所述目标代码集与所述目标版本的代码不存在冲突时,得到所述目标代码集的指示无冲突的冲突分析结果;对所述目标代码集和所述目标版本的代码进行合并处理,得到下一版本的代码,将所述下一版本的代码作为所述目标版本的代码重复执行冲突检测的步骤,直到得到所述预设数量个代码集中每个代码集的冲突分析结果。
在一种可选的实施方式中,构建单元903,具体用于对所述第一组代码集进行构建预测,得到多个构建预测结果,所述多个构建预测结果中每个构建预测结果指示的一组代码集为预测构建成功的一组代码集;对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理;所述目标构建预测结果指示的一组代码集未进行过构建处理;若对所述目标构建预测结果指示的一组代码集构建成功,则将所述目标构建预测结果指示的一组代码集确定为第二组代码集;若对所述目标构建预测结果指示的一组代码集构建失败,则重复执行对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理的步骤,直到确定出第二组代码集。
在一种可选的实施方式中,构建单元903对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理,具体为当所述目标构建预测结果包括指定数量个构建预测结果时,对所述指定数量个构建预测结果中每个构建预测结果指示的一组代码集进行并行构建处理。
在一种可选的实施方式中,构建单元903若对所述目标构建预测结果指示的一组代码集构建成功,则将所述目标构建预测结果指示的一组代码集确定为第二组代码集,具体为若对所述指定数量个构建预测结果中的一个构建预测结果指示的一组代码集构建成功,则将所述一个构建预测结果指示的一组代码集确定为第二组代码集;若对所述指定数量个构建预测结果中的至少两个构建预测结果指示的一组代码集构建成功,则将所述至少两个构建预测结果中优先级最高的构建预测结果指示的一组代码集确定为第二组代码集。
在一种可选的实施方式中,该代码管理装置还可以包括处理单元905。处理单元905,用于在所述根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集之后,并在所述根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集之前,将所述第一组代码集写入无冲突队列,并从所述预设数量个代码集中确定出第三组代码集,将所述第三组代码集写入结果序列包括的冲突列表;所述第三组代码集包括冲突分析结果指示冲突的代码集。
在一种可选的实施方式中,处理单元905,还用于在所述根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集之后,并在所述将所述第二组代码集提交至指定代码仓库之前,将所述第二组代码集写入结果序列包括的成功列表,并将对所述第一组代码集进行构建处理得到的第四组代码集写入结果序列包括的失败列表中;所述第四组代码集包括构建失败的代码集。
在一种可选的实施方式中,处理单元905,还用于在将所述第一组代码集写入无冲突队列的情况下,将所述第一组代码集的提交状态记录为挂起状态;在将所述第三组代码集写入结果序列包括的冲突列表的情况下,将所述第三组代码集的提交状态记录为挂起冲突状态;在将所述第二组代码集写入结果序列包括的成功列表,并将对所述第一组代码集进行构建处理得到的第四组代码集写入结果序列包括的失败列表中的情况下,将所述第二组代码集的提交状态和所述第四组代码集的提交状态均记录为挂起状态;在将所述第二组代码集提交至指定代码仓库的情况下,将所述第二组代码集的提交状态更新为提交成功状态,所述第三组代码集的提交状态记录更新为冲突状态,将所述第四组代码集的提交状态记录更新为提交失败状态。
可见,图9所示的实施例中,服务器可以从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,并根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集;服务器还可以根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集以提交至指定代码仓库,从而提高指定代码仓库的代码质量,进而提高代码管理效率。
请参阅图10,为本申请实施例提供的一种服务器的结构示意图。其中,本实施例中所描述的服务器可以包括:处理器1000、存储器2000、一个或多个输出设备3000。处理器1000、存储器2000、一个或多个输出设备3000之间可以通过总线或其它方式连接。在一个实施例中,输出设备3000可以为可选的设备。在一个实施例中,该服务器还可以包括一个或多个输入设备4000。处理器1000、存储器2000、一个或多个输出设备3000和一个或多个输入设备4000之间可以通过总线或其它方式连接。输出设备3000和输入设备4000可以包括标准的有线或无线通信接口。
处理器1000可以是中央处理模块(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器2000可以是高速RAM存储器,也可为非不稳定的存储器(non-volatilememory),例如磁盘存储器。存储器2000用于存储一组程序代码,处理器1000、输出设备3000和输入设备4000可以调用存储器2000中存储的程序代码。具体地:
处理器1000,用于从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,每个代码集包括相同时间点提交的至少一个代码文件;根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,所述第一组代码集包括冲突分析结果指示无冲突的代码集;根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,所述第二组代码集包括构建成功的代码集;将所述第二组
代码集提交至指定代码仓库。
可选地,处理1000具体用于通过输出设备3000将所述第二组代码集提交至指定代码仓库。
可选地,处理器1000根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,具体为对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果;根据所述每个代码集的冲突分析结果,从所述预设数量个代码集中确定出冲突分析结果指示无冲突的代码集;将所述冲突分析结果指示无冲突的代码集确定为第一组代码集。
可选地,处理器1000对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果,具体为检测所述预设数量个代码集中的目标代码集与目标版本的代码是否存在冲突;所述目标代码集为当前未被检测的至少一个代码集中提交时间最早的代码集;当所述目标代码集与所述目标版本的代码不存在冲突时,得到所述目标代码集的指示无冲突的冲突分析结果;对所述目标代码集和所述目标版本的代码进行合并处理,得到下一版本的代码,将所述下一版本的代码作为所述目标版本的代码重复执行冲突检测的步骤,直到得到所述预设数量个代码集中每个代码集的冲突分析结果。
可选地,处理器1000根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,具体为对所述第一组代码集进行构建预测,得到多个构建预测结果,所述多个构建预测结果中每个构建预测结果指示的一组代码集为预测构建成功的一组代码集;对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理;所述目标构建预测结果指示的一组代码集未进行过构建处理;若对所述目标构建预测结果指示的一组代码集构建成功,则将所述目标构建预测结果指示的一组代码集确定为第二组代码集;若对所述目标构建预测结果指示的一组代码集构建失败,则重复执行对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理的步骤,直到确定出第二组代码集。
可选地,处理器1000对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理,具体为当所述目标构建预测结果包括指定数量个构建预测结果时,对所述指定数量个构建预测结果中每个构建预测结果指示的一组代码集进行并行构建处理。
可选地,处理器1000若对所述目标构建预测结果指示的一组代码集构建成功,则将所述目标构建预测结果指示的一组代码集确定为第二组代码集,具体为若对所述指定数量个构建预测结果中的一个构建预测结果指示的一组代码集构建成功,则将所述一个构建预测结果指示的一组代码集确定为第二组代码集;若对所述指定数量个构建预测结果中的至少两个构建预测结果指示的一组代码集构建成功,则将所述至少两个构建预测结果中优先级最高的构建预测结果指示的一组代码集确定为第二组代码集。
可选地,处理器1000,还用于在所述根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集之后,并在所述根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集之前,将所述第一组代码集写入无冲突队列,并从所述预设数量个代码集中确定出第三组代码集,将所述第三组代码集写入结果序列包括的冲突列表;所述第三组代码集包括冲突分析结果指示冲突的代码集;
可选地,处理器1000,还用于在所述根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集之后,并在所述将所述第二组代码集提交至指定代码仓库之前,将所述第二组代码集写入结果序列包括的成功列表,并将对所述第一组代码集进行构建处理得到的第四组代码集写入结果序列包括的失败列表中;所述第四组代码集包括构建失败的代码集。
可选地,处理器1000,还用于在将所述第一组代码集写入无冲突队列的情况下,将所述第一组代码集的提交状态记录为挂起状态;在将所述第三组代码集写入结果序列包括的冲突列表的情况下,将所述第三组代码集的提交状态记录为挂起冲突状态;在将所述第二组代码集写入结果序列包括的成功列表,并将对所述第一组代码集进行构建处理得到的第四组代码集写入结果序列包括的失败列表中的情况下,将所述第二组代码集的提交状态和所述第四组代码集的提交状态均记录为挂起状态;在将所述第二组代码集提交至指定代码仓库的情况下,将所述第二组代码集的提交状态更新为提交成功状态,所述第三组代码集的提交状态记录更新为冲突状态,将所述第四组代码集的提交状态记录更新为提交失败状态。
具体实现中,本申请实施例中所描述的处理器1000、输出设备3000、输入设备4000可执行图3和图8实施例所描述的实现方式,也可执行本申请实施例所描述的实现方式,在此不再赘述。
在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个模块中。上述集成的模块既可以采样硬件的形式实现,也可以采样软件功能模块的形式实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的介质为计算机可读存储介质,该计算机可读存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本申请权利要求所作的等同变化,仍属于本申请所涵盖的范围。
Claims (7)
1.一种代码管理方法,其特征在于,包括:
从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,每个代码集包括相同时间点提交的至少一个代码文件;
根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,包括:对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果;根据所述每个代码集的冲突分析结果,从所述预设数量个代码集中确定出冲突分析结果指示无冲突的代码集;将所述冲突分析结果指示无冲突的代码集确定为第一组代码集;
所述对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果,包括:检测所述预设数量个代码集中的目标代码集与目标版本的代码是否存在冲突;所述目标代码集为当前未被检测的至少一个代码集中提交时间最早的代码集;当所述目标代码集与所述目标版本的代码不存在冲突时,得到所述目标代码集的指示无冲突的冲突分析结果;对所述目标代码集和所述目标版本的代码进行合并处理,得到下一版本的代码,将所述下一版本的代码作为所述目标版本的代码重复执行冲突检测的步骤,直到得到所述预设数量个代码集中每个代码集的冲突分析结果;
根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,包括:对所述第一组代码集进行构建预测,得到多个构建预测结果,所述多个构建预测结果中每个构建预测结果指示的一组代码集为预测构建成功的一组代码集;对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理;所述目标构建预测结果指示的一组代码集未进行过构建处理;若对所述目标构建预测结果指示的一组代码集构建成功,则将所述目标构建预测结果指示的一组代码集确定为第二组代码集;若对所述目标构建预测结果指示的一组代码集构建失败,则重复执行对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理的步骤,直到确定出第二组代码集;所述第二组代码集包括构建成功的代码集;
将所述第二组代码集提交至指定代码仓库。
2.根据权利要求1所述的方法,其特征在于,对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理,包括:
当所述目标构建预测结果包括指定数量个构建预测结果时,对所述指定数量个构建预测结果中每个构建预测结果指示的一组代码集进行并行构建处理;
所述若对所述目标构建预测结果指示的一组代码集构建成功,则将所述目标构建预测结果指示的一组代码集确定为第二组代码集,包括:
若对所述指定数量个构建预测结果中的一个构建预测结果指示的一组代码集构建成功,则将所述一个构建预测结果指示的一组代码集确定为第二组代码集;
若对所述指定数量个构建预测结果中的至少两个构建预测结果指示的一组代码集构建成功,则将所述至少两个构建预测结果中优先级最高的构建预测结果指示的一组代码集确定为第二组代码集。
3.根据权利要求1所述的方法,其特征在于,在所述根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集之后,并在所述根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集之前,所述方法还包括:
将所述第一组代码集写入无冲突队列,并从所述预设数量个代码集中确定出第三组代码集,将所述第三组代码集写入结果序列包括的冲突列表;所述第三组代码集包括冲突分析结果指示冲突的代码集;
在所述根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集之后,并在所述将所述第二组代码集提交至指定代码仓库之前,所述方法还包括:
将所述第二组代码集写入结果序列包括的成功列表,并将对所述第一组代码集进行构建处理得到的第四组代码集写入结果序列包括的失败列表;所述第四组代码集包括构建失败的代码集。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在将所述第一组代码集写入无冲突队列的情况下,将所述第一组代码集的提交状态记录为挂起状态;
在将所述第三组代码集写入结果序列包括的冲突列表的情况下,将所述第三组代码集的提交状态记录为挂起冲突状态;
在将所述第二组代码集写入结果序列包括的成功列表,并将对所述第一组代码集进行构建处理得到的第四组代码集写入结果序列包括的失败列表中的情况下,将所述第二组代码集的提交状态和所述第四组代码集的提交状态均记录为挂起状态;
在将所述第二组代码集提交至指定代码仓库的情况下,将所述第二组代码集的提交状态更新为提交成功状态,所述第三组代码集的提交状态记录更新为冲突状态,将所述第四组代码集的提交状态记录更新为提交失败状态。
5.一种代码管理装置,其特征在于,包括:
读取单元,用于从预设的提交队列中读取预设数量个代码集,所述提交队列包括多个时间点提交的代码集,每个代码集包括相同时间点提交的至少一个代码文件;
确定单元,用于根据预设的冲突分析规则,从所述预设数量个代码集中确定出第一组代码集,所述第一组代码集包括冲突分析结果指示无冲突的代码集,包括:对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果;根据所述每个代码集的冲突分析结果,从所述预设数量个代码集中确定出冲突分析结果指示无冲突的代码集;将所述冲突分析结果指示无冲突的代码集确定为第一组代码集;
所述对所述预设数量个代码集进行冲突分析,得到所述预设数量个代码集中每个代码集的冲突分析结果,包括:检测所述预设数量个代码集中的目标代码集与目标版本的代码是否存在冲突;所述目标代码集为当前未被检测的至少一个代码集中提交时间最早的代码集;当所述目标代码集与所述目标版本的代码不存在冲突时,得到所述目标代码集的指示无冲突的冲突分析结果;对所述目标代码集和所述目标版本的代码进行合并处理,得到下一版本的代码,将所述下一版本的代码作为所述目标版本的代码重复执行冲突检测的步骤,直到得到所述预设数量个代码集中每个代码集的冲突分析结果;
构建单元,用于根据预设的构建规则,对所述第一组代码集进行构建处理,得到第二组代码集,包括:对所述第一组代码集进行构建预测,得到多个构建预测结果,所述多个构建预测结果中每个构建预测结果指示的一组代码集为预测构建成功的一组代码集;对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理;所述目标构建预测结果指示的一组代码集未进行过构建处理;若对所述目标构建预测结果指示的一组代码集构建成功,则将所述目标构建预测结果指示的一组代码集确定为第二组代码集;若对所述目标构建预测结果指示的一组代码集构建失败,则重复执行对所述多个构建预测结果中的目标构建预测结果指示的一组代码集进行构建处理的步骤,直到确定出第二组代码集;
提交单元,用于将所述第二组代码集提交至指定代码仓库。
6.一种服务器,其特征在于,包括处理器、存储器和输出设备,所述处理器、所述存储器和所述输出设备之间相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-4任一项所述的方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910965761.3A CN110825427B (zh) | 2019-10-12 | 2019-10-12 | 一种代码管理方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910965761.3A CN110825427B (zh) | 2019-10-12 | 2019-10-12 | 一种代码管理方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825427A CN110825427A (zh) | 2020-02-21 |
CN110825427B true CN110825427B (zh) | 2024-01-26 |
Family
ID=69549251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910965761.3A Active CN110825427B (zh) | 2019-10-12 | 2019-10-12 | 一种代码管理方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110825427B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176983B (zh) | 2019-10-18 | 2021-10-22 | 华为技术有限公司 | 一种代码冲突消解系统、方法、装置、设备及介质 |
CN112486843A (zh) * | 2020-12-17 | 2021-03-12 | 中国农业银行股份有限公司 | 数据的处理方法、装置、电子设备及计算机存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6059840A (en) * | 1997-03-17 | 2000-05-09 | Motorola, Inc. | Automatic scheduling of instructions to reduce code size |
CN101887541A (zh) * | 2009-05-12 | 2010-11-17 | 福特汽车公司 | 用于电子地安排车辆订单的系统 |
CN103677754A (zh) * | 2012-09-21 | 2014-03-26 | 国际商业机器公司 | 用于优化应用程序的并行构建的方法和系统 |
CN105227608A (zh) * | 2014-06-27 | 2016-01-06 | 国际商业机器公司 | 用于开发丰富互联网应用的方法和装置 |
CN106126410A (zh) * | 2016-05-26 | 2016-11-16 | 华为技术有限公司 | 代码冲突的提示方法及装置 |
CN106411568A (zh) * | 2016-08-30 | 2017-02-15 | 同济大学 | 基于规则冲突的sdn网络状态更新方法及系统 |
CN106484606A (zh) * | 2015-09-01 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种代码提交方法和设备 |
CN106681783A (zh) * | 2016-12-13 | 2017-05-17 | 深圳市恒扬数据股份有限公司 | 一种svn代码检测方法及其系统 |
CN107678773A (zh) * | 2017-09-28 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于git的代码开发与测试流程管理方法 |
CN109359028A (zh) * | 2018-08-22 | 2019-02-19 | 平安科技(深圳)有限公司 | 代码质量监控方法、装置、计算机设备及存储介质 |
CN109426602A (zh) * | 2017-07-18 | 2019-03-05 | 中国移动通信集团公司 | 一种应用开发过程中使用的检测方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9158658B2 (en) * | 2013-10-15 | 2015-10-13 | International Business Machines Corporation | Detecting merge conflicts and compilation errors in a collaborative integrated development environment |
-
2019
- 2019-10-12 CN CN201910965761.3A patent/CN110825427B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6059840A (en) * | 1997-03-17 | 2000-05-09 | Motorola, Inc. | Automatic scheduling of instructions to reduce code size |
CN101887541A (zh) * | 2009-05-12 | 2010-11-17 | 福特汽车公司 | 用于电子地安排车辆订单的系统 |
CN103677754A (zh) * | 2012-09-21 | 2014-03-26 | 国际商业机器公司 | 用于优化应用程序的并行构建的方法和系统 |
CN105227608A (zh) * | 2014-06-27 | 2016-01-06 | 国际商业机器公司 | 用于开发丰富互联网应用的方法和装置 |
CN106484606A (zh) * | 2015-09-01 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种代码提交方法和设备 |
CN106126410A (zh) * | 2016-05-26 | 2016-11-16 | 华为技术有限公司 | 代码冲突的提示方法及装置 |
CN106411568A (zh) * | 2016-08-30 | 2017-02-15 | 同济大学 | 基于规则冲突的sdn网络状态更新方法及系统 |
CN106681783A (zh) * | 2016-12-13 | 2017-05-17 | 深圳市恒扬数据股份有限公司 | 一种svn代码检测方法及其系统 |
CN109426602A (zh) * | 2017-07-18 | 2019-03-05 | 中国移动通信集团公司 | 一种应用开发过程中使用的检测方法及设备 |
CN107678773A (zh) * | 2017-09-28 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于git的代码开发与测试流程管理方法 |
CN109359028A (zh) * | 2018-08-22 | 2019-02-19 | 平安科技(深圳)有限公司 | 代码质量监控方法、装置、计算机设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
A Chatbot for Conflict Detection and Resolution;Elahe Paikari等;《 2019 IEEE/ACM 1st International Workshop on Bots in Software Engineering (BotSE)》;第29-33页 * |
多核推测并行流水线模型下的冲突解决;叶磊;《中国优秀硕士学位论文全文数据库信息科技辑》(第3期);第I137-29页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110825427A (zh) | 2020-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10360523B2 (en) | System and method for executing business services and enhancing business performance through a business process modeling notation | |
CN110741342A (zh) | 区块链交易提交排序 | |
CN110825427B (zh) | 一种代码管理方法、装置、服务器及存储介质 | |
CN102609296A (zh) | 虚拟机分支和并行执行 | |
KR102564163B1 (ko) | 비휘발성 메모리 익스프레스(NVMe) 기반 SSD(Solid State Drive) 컨트롤러에서 명령 ID 충돌 시나리오를 핸들링하는 방법 | |
CN111309466B (zh) | 一种基于云平台多线程调度的方法、系统、设备及介质 | |
CN110675255A (zh) | 在区块链中并发执行交易的方法和装置 | |
US9870314B1 (en) | Update testing by build introspection | |
US10310909B2 (en) | Managing execution of computer operations with non-competing computer resource requirements | |
US20170351598A1 (en) | Optimizations for regression tracking and triaging in software testing | |
CN111783094A (zh) | 一种数据分析方法、装置、服务器及可读存储介质 | |
US20120059997A1 (en) | Apparatus and method for detecting data race | |
US20110167413A1 (en) | Coverage apparatus and method for testing multi-thread environment | |
CN103136043B (zh) | 一种异步io的迁移方法、系统和网络节点 | |
CN110689344B (zh) | 在区块链中并发执行交易的方法和装置 | |
CN110928941B (zh) | 一种数据分片抽取方法及装置 | |
US20200236244A1 (en) | Information processing system and apparatus and non-transitory computer readable medium | |
CN114564412B (zh) | 区块链的确定性交易并发调度方法及系统 | |
JP2015185027A (ja) | ジョブ判別プログラム、装置、及び方法 | |
CN116303211A (zh) | 一种应用于车载场景的cpu多核间通信方法及装置 | |
US12028236B2 (en) | Consensus driven service promotion | |
JP6993472B2 (ja) | 深層学習チップを検出する方法、装置、電子機器、およびコンピュータ記憶媒体 | |
CN115809150A (zh) | 一种分布式死锁检测方法、装置及电子设备 | |
US20080163224A1 (en) | Modeling interrupts in a business process | |
CN109062642B (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240102 Address after: No. 301, Building 11, Phase II, Taicang University Science Park, No. 27 Zigang Road, Science and Education New City, Taicang City, Suzhou City, Jiangsu Province, 215000 Applicant after: Tianhang Changying (Jiangsu) Technology Co.,Ltd. Address before: 400010 38 / F, 39 / F, unit 1, 99 Wuyi Road, Yuzhong District, Chongqing Applicant before: CHONGQING FINANCIAL ASSETS EXCHANGE Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |