一种基于文本匹配的重复冲突方案检测方法技术

技术编号:33993627 阅读:12 留言:0更新日期:2022-07-02 10:20
本发明专利技术一种基于文本匹配的重复冲突方案检测方法,对于具有大量历史合并代码的数据库,从一个代码仓库向另一个代码仓库迁移,或一个代码库存在相似更新的现实场景,利用大量已经解决好合并问题的代码仓库信息,抽取出相关的合并解决方案。其次,对于获取到历史合并冲突的解决方案将其存储到数据库。然后,我们遇到现有冲突的时候,利用保存的冲突解决方案来进行合并方案的推荐。最后,基于历史信息解决的冲突,将其在数据库中的是更新时间进行更新,表明解决好的冲突使用频度。冲突是开发人员手动解决的话,将解决方案保存到数据库中。将解决方案保存到数据库中。将解决方案保存到数据库中。

【技术实现步骤摘要】
一种基于文本匹配的重复冲突方案检测方法


[0001]本专利技术属于计算机
,尤其是软件
,具体是一种基于文本匹配的重复冲突方案检测方法。

技术介绍

[0002]随着互联网技术的应用越来越广泛,以及软件行业日新月异的变化,远程协同工作、软件代码仓库的使用以及解决冲突的需求越来越多。在协同开发工作中,有两种基础形式,分布式和集中式。而Git作为一个典型的软件代码仓库,是目前世界上最先进的分布式版本控制系统。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆,在本地机器上拷贝一个完整的Git仓库。Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪能力。
[0003]然而,在协同工作中,会有不同的人来进行协同工作,会产生分支,而使用Git版本控制提交项目流程,在合并不同的工作分支时,会产生合并错误,即冲突。尽管开发人员可以通过Git中的方法调用,从而来解决一些简单的合并冲突,但对于复杂冲突的解决只能靠开发人员自己去手动解决,不仅如此,面对大型的开源项目合并时,冲突的数量就会急剧上升,大大增加了开发人员的工作量,是Git协同工作中所面临的主要挑战。
[0004]针对这些问题的一个有效解决方案是在软件集成开发环境中提供冲突的解决方案的功能。这种提示功能应当通过开发人员以前解决好的历史冲突来进行分析,对于现在面临的冲突,能够对于历史冲突信息的快速匹配,为开发人员提供解决冲突方案的提示,从而提高了开发的效率。
[0005]但是由于Git版本控制中合并方案的具体表现形式过于单一,目前的开源框架和IDE不能对复杂冲突的解决提供帮助。
[0006]CN113626385A公开的一种基于文本数据读取的方法和系统,包括分析过滤重复文件并将关联的文件合并归类至对应数据集合Fn中;比对待提取文本文件中属性集合与属性列表以根据其相似程度赋值处理引擎,并形成文件的属性分析结果集合;响应于属性分析结果集合与待提取文本文件中的内容分析集合的匹配度超过第一阈值,利用属性对应的特处理引擎提取文本数据。该方法和系统可以自动适配已知特征和未知特征的文本文件数据,调取相应的数据提取引擎,实现文本文件类型原始数据的自动识别和解析入库,提高文本文件的提取效率和准确性,提升大数据分析能力。但是其主要是对文件进行属性提取,然后对于超过属性相似阈值的文件进行归类。对于重复的文件,需要进行文件归类,提取出来属性集合和列表,操作的粒度比较小,比较繁琐,不适合应用于冲突解决的场景。

技术实现思路

[0007]本专利技术所要解决的技术问题是如何收集含有历史合并代码仓库中的冲突信息,以
及怎么判断冲突之间的相似性,利用冲突的相似性以及从保存的历史冲突合并方案中快速定位相似冲突作为复杂合并冲突的方案之一,有效地帮助开发者理解代码,快速地解决代码冲突合并。
[0008]为了解决以上技术问题,本专利技术提供一种基于文本匹配的重复冲突方案检测方法,包括以下几个步骤:步骤1)对于具有历史合并代码的代码仓库,提取出提交树中所有合并节点,然后判断合并节点是否为一个含有冲突历史信息的节点;步骤2)使用图遍历算法和节点合并分析,记录冲突节点的当前分支名,合并到当前分支的其他分支名,合并到当前分支的其他分支的前驱结点,冲突节点前驱的前驱节点,合并分支和待合并分支的祖先节点,并记录各个节点的提交标记;步骤3)使用文本匹配技术,提取文件中的代码块进行对比,然后对于匹配成功的代码块通过hash算法得到一个hash值,作为一个冲突方案的记录维度,然后将当前的仓库名,各个节点的提交标志,各个文件代码块的hash值、更新时间保存到数据库中;步骤4)使用数据库索引快速匹配技术,对现有冲突与保存的冲突方案进行匹配;将匹配成功的冲突方案返回,并且更新保存时间;匹配失败,程序员手动解决合并冲突问题,然后把当前合并成功的冲突方案记录到数据库中。
[0009]进一步的,步骤1)中,在判断合并节点的同时,通过提交树保存对比文件、源文件、参考文件、合并文件所在节点的commit Id,通过对commit Id的保存可以定位到冲突文件,记录好仓库名称,为冲突信息保存提供一种方案。
[0010]进一步的,获得所述commit Id的合并节点为E,针对该合并节点E,记录当前节点的所在的当前分支以及合并分支,找到两个分支之前汇合的节点成为祖先节点,并且保存其commit Id,找到合并节点所在分支前驱的前驱结点为D和合并分支的前驱结点为C。这些节点中包含着冲突信息,为后续冲突信息保存做铺垫。
[0011]进一步的,获取D的前驱节点B,将节点B和合并分支的节点C进行合并处理,若出现合并冲突,则当前节点E是一个冲突节点,记录获取节点的commit Id。利用Git中合并算法,来判断是否会发生冲突。
[0012]进一步的,步骤3)中,使用文本匹配技术,将对比文件、源文件、参考文件中的代码先进行匹配,得到代码块不能完全匹配成功的代码块列表,对于列表中的每一个代码块分别通过hash算法,得到一个代码块hash值;由步骤1)和步骤3)得到仓库名和源文件提交id、对比文件提交id、参考文件提交id、合并文件提交id,并获取到源文件中源代码块的hash值、对比文件代码块的hash值、合并文件代码块的hash值、参考文件代码块的hash值,最后作为冲突信息的合并方案保存到数据库中。
[0013]进一步的,步骤4)中,使用数据库索引快速匹配技术,根据在本次项目遇到的冲突,提取相应的冲突块,运用hash算法对代码块进行代码处理,获得到的hash值,通过数据库中的索引匹配数据库中的数据,如果匹配成功,推荐历史合并冲突方案,并且更新数据库中的合并方案时间,如果匹配失败,手动解决,然后把本次的合并冲突方案保存到数据库中。比较现有冲突和保存冲突的相似性,利用保存的冲突合并方案大大提高了相似冲突的解决速度。
[0014]相对于现有技术,本专利技术具有如下有益效果:
1.本专利技术对于具有历史合并代码的代码仓库,提取出所有历史合并的提交节点,作为一个节点集合;接着,对节点集合中的每一个合并节点使用图的遍历算法和节点合并分析,判断是否为冲突节点;接着,基于文本分析的方法,找到冲突文件的关键代码块,然后使用hash算法得到hash值,保存解决方案到数据库中;最后,基于历史信息解决的冲突,遇到现有冲突的时候,将文件冲突代码块和保存的合并冲突方案进行匹配,实现合并方案的推荐,有效地帮助开发者理解代码,快速地解决代码冲突合并。
[0015]2.本专利技术对于具有历史合并代码的代码仓库,如从一个代码仓库向另一个代码库迁移,或一个代码库存在相似更新等现实场景,历史合并决策可以对于新的合并冲突有参考价值。第一步,可以使用So本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于文本匹配的重复冲突方案检测方法,其特征在于,包括以下几个步骤:步骤1)对于具有历史合并代码的代码仓库,提取出提交树中所有合并节点,然后判断合并节点是否为一个含有冲突历史信息的节点;步骤2)使用图遍历算法和节点合并分析,记录冲突节点的当前分支名,合并到当前分支的其他分支名,合并到当前分支的其他分支的前驱结点,冲突节点前驱的前驱节点,合并分支和待合并分支的祖先节点,并记录各个节点的提交标记;步骤3)使用文本匹配技术,提取文件中的代码块进行对比,然后对于匹配成功的代码块通过hash算法得到一个hash值,作为一个冲突方案的记录维度,然后将当前的仓库名,各个节点的提交标志,各个文件代码块的hash值、更新时间保存到数据库中,作为数据库中的代码冲突的合并方案;步骤4)使用数据库索引快速匹配技术,对现有冲突与保存的冲突方案进行匹配;将匹配成功的冲突方案返回,并且更新保存时间;匹配失败,程序员手动解决合并冲突问题,然后把当前合并成功的冲突方案记录到数据库中。2.根据权利要求1所述的基于文本匹配的重复冲突方案检测方法,其特征在于:所述步骤1)中,在判断合并节点的同时,通过提交树保存对比文件、源文件、参考文件、合并文件所在节点的commit Id,通过对commit Id的保存可以定位到冲突文件,记录好仓库名称。3. 根据权利要求2所述的基于文本匹配的重复冲突方案检测方法,其特征在于:获得所述commit Id的合并节点为E,对于该合并节点E,记录当前节点的所在的当前分支以及...

【专利技术属性】
技术研发人员:王翊唐勇刘世伟李贺彬张卫丰
申请(专利权)人:南京邮电大学
类型:发明
国别省市:

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

1