一种代码冲突合并方法、系统、电子设备及可读存储介质技术方案

技术编号:34411772 阅读:65 留言:0更新日期:2022-08-03 22:04
本发明专利技术公开一种代码冲突合并方法、系统、电子设备及可读存储介质,涉及数据处理技术领域,包括:在原始版本、第一修改版本和第二修改版本中添加含有合并策略指令的标记信息;将标记后的三个版本经树状结构解析后得到各自的文本合并结构树;将文本合并结构树中的嵌套子级进行层级折叠后进行代码合并,对存在代码冲突的区域,根据合并策略指令进行代码合并;代码合并完成后,得到合并结果,所述合并结果为第一修改版本的修改被全部接受后的合并结果,或第二修改版本的修改被全部接受后的合并结果。降低开发人员手动处理代码冲突合并的频率和数量,提高自动处理代码冲突的能力,减轻开发人员负担。发人员负担。发人员负担。

【技术实现步骤摘要】
一种代码冲突合并方法、系统、电子设备及可读存储介质


[0001]本专利技术涉及数据处理
,特别是涉及一种代码冲突合并方法、系统、电子设备及可读存储介质。

技术介绍

[0002]在代码开发过程中,三路合并算法是指:基于同一版本的代码分别进行两次不同的编辑修订,按照文本行分别比较出两个修订版本相对于共同原始版本存在差异的行数,再将这两份差异对齐,将两份差异版本合并为一个新版本代码。
[0003]此时,如果存在一块区域,同时被这两次不同的编辑修订进行修改,则将该区域判定为代码冲突,由开发人员手工处理代码冲突的区域;否则,只需要自动合并两份差异就可以完成合并。
[0004]由于实际业务的复杂性,可能会同时遇到“先可视化编辑业务模块之后再生成代码”以及“开发人员手工修改代码功能”这两种可能引发代码内容变动的情况,难以避免出现代码冲突。那么,在这样的业务场景下,如果使用传统的三路合并算法,开发人员会频繁地遇到需要手工处理代码冲突合并的情况。
[0005]此外,由于传统三路合并算法基于共同原始版本进行比较,如果不额外处理的话,每次在出现代码冲突时的合并,都需要将以往处理过的冲突再重新处理一遍,在开发复杂页面和业务时影响开发进度。

技术实现思路

[0006]为了解决上述问题,本专利技术提出了一种代码冲突合并方法、系统、电子设备及可读存储介质,降低开发人员手动处理代码冲突合并的频率和数量,提高自动处理代码冲突的能力,减轻开发人员负担。
[0007]为了实现上述目的,本专利技术采用如下技术方案:第一方面,本专利技术提供一种代码冲突合并方法,包括:在原始版本、第一修改版本和第二修改版本中添加含有合并策略指令的标记信息;将标记后的三个版本经树状结构解析后得到各自的文本合并结构树;将文本合并结构树中的嵌套子级进行层级折叠后进行代码合并,对存在代码冲突的区域,根据合并策略指令进行代码合并;代码合并完成后得到合并结果,所述合并结果为第一修改版本的修改被全部接受后的合并结果,或第二修改版本的修改被全部接受后的合并结果。
[0008]作为可选择的实施方式,树状结构解析的过程包括:扫描含有合并策略指令的注释行,通过@begin/@end指令的压栈和出栈构造树状结构。
[0009]作为可选择的实施方式,@begin和@end为配对结构,支持多级嵌套,用于标记区域的开始和结束。
[0010]作为可选择的实施方式,在标记区域开始的注释行内,添加合并策略指令。
[0011]作为可选择的实施方式,将合并结果中的层级折叠部分,通过区域标识符递归展开子层级。
[0012]作为可选择的实施方式,折叠是将当前待合并节点下,所有根级节点折叠为一个引用指令;展开是将引用指令按照区域标识符解引用。
[0013]作为可选择的实施方式,对没有代码冲突的区域,第一修改版本和第二修改版本的修改均全部接受。
[0014]第二方面,本专利技术提供一种代码冲突合并系统,包括:标记模块,被配置为在原始版本、第一修改版本和第二修改版本中添加含有合并策略指令的标记信息;解析模块,被配置为将标记后的三个版本经树状结构解析后得到各自的文本合并结构树;合并模块,被配置为将文本合并结构树中的嵌套子级进行层级折叠后进行代码合并,对存在代码冲突的区域,根据合并策略指令进行代码合并;输出模块,被配置为代码合并完成后得到合并结果,所述合并结果为第一修改版本的修改被全部接受后的合并结果,或第二修改版本的修改被全部接受后的合并结果。
[0015]第三方面,本专利技术提供一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成第一方面所述的方法。
[0016]第四方面,本专利技术提供一种可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成第一方面所述的方法。
[0017]与现有技术相比,本专利技术的有益效果为:本专利技术提出一种代码冲突合并方法、系统、电子设备及可读存储介质,通过预设合并策略,对存在代码冲突的区域自动进行代码合并,降低开发人员手动处理代码冲突合并的频率和数量,提高自动处理代码冲突的能力,减轻开发人员负担。自动处理代码冲突,避免每次冲突时,再次重复处理已合并的内容,避免不必要的合并冲突。
[0018]本专利技术附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术的实践了解到。
附图说明
[0019]构成本专利技术的一部分的说明书附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。
[0020]图1为本专利技术实施例1提供的代码冲突合并方法流程图。
具体实施方式
[0021]下面结合附图与实施例对本专利技术做进一步说明。
[0022]应该指出,以下详细说明都是示例性的,旨在对本专利技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本专利技术所属
的普通技术人员通常理解的相同含义。
[0023]需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本专利技术的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0024]在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。
[0025]实施例1本实施例提供一种代码冲突合并方法,包括:在原始版本、第一修改版本和第二修改版本中添加含有合并策略指令的标记信息;将标记后的三个版本经树状结构解析后得到各自的文本合并结构树;将文本合并结构树中的嵌套子级进行层级折叠后进行代码合并,对存在代码冲突的区域,根据合并策略指令进行代码合并;代码合并完成后得到合并结果,所述合并结果为第一修改版本的修改被全部接受后的合并结果,或第二修改版本的修改被全部接受后的合并结果。
[0026]在本实施例中,根据业务场景的不同,预先设置在特定场景下的合并策略,在出现代码冲突时,根据合并策略自动进行代码合并,降低需要手工解决冲突的频率。
[0027]由于代码整体结构较为固定,不会发生大的变化,因此还可以在不影响代码执行效果的同时,在代码中插入标记信息,该标记信息包含有特定场景下的合并策略指令,以在代码合并过程中进行识别,从而自动合并;例如:/* @begin
ꢀ‑‑
option identifier */// 区域内代码/* @end */其中,@begin注释行表示为标记区域开始,
‑‑


开头表示为指定指令参数(例如
‑‑
merge,为合并策略参数,该区域内的代码根据指定的合并策本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码冲突合并方法,其特征在于,包括:在原始版本、第一修改版本和第二修改版本中添加含有合并策略指令的标记信息;将标记后的三个版本经树状结构解析后得到各自的文本合并结构树;将文本合并结构树中的嵌套子级进行层级折叠后进行代码合并,对存在代码冲突的区域,根据合并策略指令进行代码合并;代码合并完成后,得到合并结果,所述合并结果为第一修改版本的修改被全部接受后的合并结果,或第二修改版本的修改被全部接受后的合并结果。2.如权利要求1所述的一种代码冲突合并方法,其特征在于,树状结构解析的过程包括:扫描含有合并策略指令的注释行,通过@begin/@end指令的压栈和出栈构造树状结构。3.如权利要求2所述的一种代码冲突合并方法,其特征在于,@begin和@end为配对结构,支持多级嵌套,用于标记区域的开始和结束。4.如权利要求3所述的一种代码冲突合并方法,其特征在于,在标记区域开始的注释行内,添加合并策略指令。5.如权利要求1所述的一种代码冲突合并方法,其特征在于,将合并结果中的层级折叠部分,通过区域标识符递归展开子层级。6.如权利要求5所述的一种代码冲突合并方法,其特征在于,折叠是将当前待合并节点下,所有根级节点...

【专利技术属性】
技术研发人员:谢玉鑫邵明腾胡士猛胡翠梅
申请(专利权)人:金现代信息产业股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1