CN116483703A - 分支合并检测方法、装置、电子设备及存储介质 - Google Patents
分支合并检测方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116483703A CN116483703A CN202310384872.1A CN202310384872A CN116483703A CN 116483703 A CN116483703 A CN 116483703A CN 202310384872 A CN202310384872 A CN 202310384872A CN 116483703 A CN116483703 A CN 116483703A
- Authority
- CN
- China
- Prior art keywords
- branch
- development
- version
- version number
- release
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 50
- 238000003860 storage Methods 0.000 title claims abstract description 13
- 238000011161 development Methods 0.000 claims abstract description 262
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000004519 manufacturing process Methods 0.000 claims description 79
- 230000000875 corresponding effect Effects 0.000 claims description 64
- 230000002596 correlated effect Effects 0.000 claims description 5
- 238000012360 testing method Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000033764 rhythmic process Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种分支合并检测方法、装置、电子设备及存储介质,该方法通过获取待检测的开发分支的第一版本号集合以及与开发分支对应的发布分支的第二版本号集合,判断第一版本号集合中的各第一版本号是否位于第二版本号集合中,若是,则将所述发布分支直接发布;若否,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。通过这样的方法基于版本号的方式来确定发布分支中是否存在所有需要的开发分支,从而简化了现有的合并发布检测流程,可以快速地对合并后的程序分支进行检测,提高了合并检测的效率,能及时发现合并遗漏的问题。
Description
技术领域
本发明涉及软件开发技术领域,尤其涉及一种分支合并检测方法、装置、电子设备及存储介质。
背景技术
随着互联网技术的高速发展,项目的更新发布节奏越来越快。每个项目开发组都会有自己的分支策略,因此也都需要面临分支合并的问题。
而目前,比较常用的一种分支策略是采用开发分支和发布分支。各个程序员在开发分支上进行开发,测试人员测试通过后合并到发布分支,测试人员在合并了各个开发内容的发布分支上继续进行详细测试,完成测试后进行项目的新版本发布。而该测试过程是需要程序员在开发分支上去找到某个开发内容的所有提交,然后合并到发布分支。合并完成后测试人员对程序员的提交进行检查测试,如果发现问题,程序员再去检查是否发生漏合并情况,直至测试人员测试通过。这样的合并测试方式,在时间充裕的时候能够很好的解决分支合并带来的各种问题,对于时间短的情况下,则会存在漏检的问题。
发明内容
本发明的主要目的在于解决现有的程序分支合并检测中,在检测时间较少的情况下容易出现合并遗漏的问题。
本发明第一方面提供了一种分支合并检测方法,所述分支合并检测方法包括:
基于待检测的开发分支的制作单号确定与所述开发分支相关的第一版本号,得到第一版本号集合;
确定所述开发分支对应的发布分支的制作单号,并基于所述发布分支的制作单号确定与所述发布分支相关的第二版本单号,得到第二版本号集合;
判断所述第一版本号集合中的各第一版本号是否位于所述第二版本号集合中;
若是,则将所述发布分支直接发布;
若否,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。
本发明第二方面提供了一种分支合并检测装置,所述分支合并检测装置包括:
第一查询模块,用于基于待检测的开发分支的开发单号确定与所述开发分支相关的第一版本号,得到第一版本号集合;
第二查询模块,用于确定所述开发分支对应的发布分支的制作单号,并基于所述制作单号确定与所述发布分支相关的第二版本单号,得到第二版本号集合;
判断模块,用于判断所述第一版本号集合中的各第一版本号是否位于所述第二版本号集合中;
发布模块,用于在判断各第一版本号不位于所述第二版本号集合中,则将所述发布分支直接发布;以及在判断存在第一版本号不位于所述第二版本号集合中,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。
本发明第三方面提供了一种分支合并检测装置,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述电子设备执行上述的分支合并检测方法的各个步骤。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的分支合并检测方法的各个步骤。
综上,该方法通过获取待检测的开发分支的第一版本号集合以及与开发分支对应的发布分支的第二版本号集合,判断第一版本号集合中的各第一版本号是否位于第二版本号集合中,若是,则将所述发布分支直接发布;若否,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。通过这样的方法基于版本号的方式来确定发布分支中是否存在所有需要的开发分支,从而简化了现有的合并发布检测流程,可以快速地对合并后的程序分支进行检测,提高了合并检测的效率,能及时发现合并遗漏的问题。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
图1为本发明实施例中分支合并检测方法的第一个实施例示意图;
图2为本发明实施例中分支合并检测方法的第二个实施例示意图;
图3为本发明实施例中根据制作单号获取到所有关联单号与创建时间的流程图;
图4为本发明实施例中找出Redmine单对应的SVN提交版本信息的流程图;
图5为本发明实施例中分支合并检测装置的一个实施例示意图;
图6为本发明实施例中分支合并检测装置的另一个实施例示意图;
图7为本发明实施例中电子设备的一个实施例示意图。
具体实施方式
本发明实施例提供一种分支合并检测方法、装置、电子设备及存储介质,通过将开发分支和发布分支的所有信息形成集合,并记录到版本控制系统中的版本日志中,然后在进行合并检测时,基于开发分支和对应的发布分支的制作单号查询出对应的信息,例如bug单号、版本号等,通过对比这些信息即可判断出发布分支中的内容是否完整,利用本方法做成代码分支合并的自动检查,设置定时检查间隔,比如每十五分钟对代码的开发分支和发布分支进行自动检查。也可以有效减少分支合并遗漏问题的发生。
同时,本方法还可以拓展到项目中其他职能提交的文件合并检查,比如策划编辑的表格合并检查、美术提交的美术资源的合并检查。都能通过本方法很好地检查到这几种资源的分支合并操作是否出现版本遗漏。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中分支合并检测方法的第一个实施例包括:
101、基于待检测的开发分支的制作单号确定与开发分支相关的第一版本号,得到第一版本号集合。
在本实施例中,该待检测的开发分支可以是多个,在该步骤之前还包括检测发布分支中是否存在新的开发分支进行发布的提交操作,即是程序员通过程序发布界面提交程序的发布流程,而这时提交的程序是包括多个开发分支,多每个开发分支均进行制作单号的获取,并基于制作单号从系统中查询出关联的单号,例如开发单号(Redmine单号)、每个开发分支对应的bug单号以及变化的内容。
进一步的,通过查询到的单号获取到对应的第一版本号,从而形成第一版本号集合。
在实际应用中,在每个程序进行开发时,都需要在svn(版本控制系统)提交log(日志)上面附上对应的Redmine单号,通过svn前置钩子进行检测,不符合条件的不允许提交。
102、确定开发分支对应的发布分支的制作单号,并基于发布分支的制作单号确定与发布分支相关的第二版本单号,得到第二版本号集合。
在本实施例中,通过解析开发分支中的内容,基于解析到的内容从发布分支中逐一匹配,查询出内容相同的比例达到预设值时,选定发布分支作为开发分支对应的发布流程,并提取该发布分支对应的制作单号,该制作单号可以理解为是版本控制系统记录的单号,基于该单号从系统中的日志中查询出与其相关联的所有单号,该所有单号指的是该发布分支发布时的历史版本号,从而形成第二版本号集合。
103、判断第一版本号集合中的各第一版本号是否位于第二版本号集合中。
104、若是,则将发布分支直接发布;
105、若否,则提取不在第二版本集合中的开发分支合并至发布分支中进行发布。
本实施例中,所述第一版本号集合所对应的开发分支是必须要合并的内容,第二版本号集合中对应的开发分支是所有已经合并的内容。因此第二版本号集合中必须包含第一版本号集合,如果第一版本号集合中中存在某个版本号,不存在于第二版本号集合中,那么这个版本就是程序员漏合并的版本了。
在实际应用中,在判断两个版本号集合的包含关系时,具体是通过版本号对应开发分支的内容进行匹配,通过内容的匹配结果来确定两个版本号集合的包含关系。
综上,通过获取开发分支和发布分支的版本号集合进行相互匹配,若匹配结果为发布分支对应的版本号集合中存在版本号不在发布分支对应的版本号集合中时,则确定发布分支中遗漏了开发分支,其发布分支组成的程序代码不完整,需要将遗漏的开发分支并至发布分支中,以保证发布分支的完整性,利用版本号的方式来检测合并的开发分支的完整性,简化了现有的逐一内容比对的流程,缩短了发布合并的检测时间,提高了检测效率,快速识别遗漏分支。
参照图2和3,为本发明提供的分支合并检测方法的另一种实施例,包括以下步骤:
201、每次程序员进行代码提交时,将代码中的各开发分支的相关信息在svn提交log上面附上对应的Redmine单号。
本实施例中,在进行程序开发时,首先将程序分为多个分支,每个分支建议一个开发分支,每个开发分支在开发处理时均设有相关的bug单,即是每个开发单相关的bug单,测试人员都需要关联到Redmine系统对应的开发单上,以便后续合并发布时的快速读取数据进行完整性检测。
具体的,该步骤在检测到提交开发分支发布时,获取所述开发分支对应的版本号、所述开发分支的开发单号、开发单的创建时间和所述开发分支的bug单号;
将所述版本号、所述开发单号和所述bug单号进行关联,并记录于版本日志中。
如图3所示,在进行开发分支的设计时,均会记录相关的信息,如制作单号、开发单号、bug单号等等,见图1,获取的是Redmine单及其关联BUG单的Redmine单号。首先是输入需要检查的Redmine单号,然后通过Redmine提供的API接口查询该单的详细信息,获取该开发单的创建时间记为T,同时也可以获取到获取开发单关联的bug单号集合。那么所有关联的Redmine单集合为开发单+对应bug单集合,记为S。
本实施例中,在版本日志中还记录有开发分支的合并信息,具体的在所述将所述版本号、所述开发单号和所述bug单号进行关联,并记录于版本日志中之后,还包括:
基于所述bug单号确定所述开发分支的开发内容;
基于所述开发内容,从所述开发分支的代码中提取对应的代码内容,并基于所述代码内容构建合并信息;
将所述合并信息与关联后的所述版本号、所述开发单号和所述bug单号记录于所述版本日志中。
202、输入待检测的开发分支制作单号,获取最早的Redmine单的创建时间并获取该单关联的bug单号。
203、在开发分支上递归遍历svn log,获取和该制作单相关的svn版本号,得到第一版本号集合。
本实施例中,具体的确定待检测的开发分支的制作单号;基于所述开发分支的制作单号获取所述开发分支最早的开发单的创建时间,以及所述开发单关联的第一bug单号;基于所述第一bug单号在开发分支上递归遍历第一版本日志,并从所述第一版本日志中提取出与所述开发分支的制作单相关的第一版本号,得到第一版本号集合。
204、输入与开发分支对应的发布分支制作单号,获取最早的Redmine单创建时间并获取该单关联的bug单号。
205、在发布分支上递归遍历svn log,获取和该制作单相关的svn版本号。
206、每个版本和前一版本diff内容,解析出MergeInfo,MergeInfo中的来源版本号,得到第二版本号集合。
在本实施例中,在获取第二版本号集合时,具体是通过基于所述第一bug单号确定与所述开发分支对应的发布分支,并确定所述发布分支的制作单号;基于所述发布分支的制作单号获取所述发布分支最早的开发单的创建时间,以及关联的第二bug单号;基于所述第二bug单号在发布分支上递归遍历第二版本日志,并从所述第二版本日志中提取出与所述发布分支的制作单相关的第二版本号,得到第二版本号集合。
进一步的,所述从所述第二版本日志中提取出与所述发布分支的制作单相关的第二版本号,得到第二版本号集合,包括:
从所述第二版本日志中提取出与所述发布分支的制作单相关的版本号;
基于所述版本号确定对应的发布分支的内容,并提取所述发布分支的内容与所述开发分支之间的不同内容;
对所述不同内容进行解析,得到两者的合并信息;
从所述合并信息中确定来源版本号,得到第二版本号集合。
在实际应用中,提取版本号和合并信息的流程如图4所示,因为需要通过Redmine单号去SVN的log中过滤出关联SVN版本号,所以还需要从这一系列Redmine单中最早的创建时间,用来去SVN log中做范围搜索。以上信息通过Redmine的API接口和Redmine的SQL录制功能都可以方便的获得。在通过创建时间T过滤掉不符合时间条件的SVN提交外,还需要检查剩余的提交,每一条提交log中的单号是否存在于单号集合S中,所有符合提交的提交集合,记为N,N即为需要检查合并信息Mergeinfo的提交集合。
其中,程序员进行分支合并操作时,会提交SVN工具提供的MergeInfo信息到SVN仓库中,对此提取Mergeinfo信息提取方式
对于SVN的分支Merge检查,不得不用到SVN提交中的MergeInfo。对于一次代码Merge操作,这次提交会记录一个MergeInfo,具体信息中会记录从从哪个分支Merge来了哪一个SVN版本号。如下:
/mess_demo/client/src/script/branches/dev/Client/GUI:430724
/mess_demo/client/src/script/branches/dev/Client/GUI:430698,430724
当然,也可以通过SVN命令行来获取这些信息,具体如下:
>svn pget svn:mergeinfo
/mess_demo/client/src/script/branches/3DModel:334539-338282
/mess_demo/client/src/script/branches/MercuryPlugin0117:225346-226640
/mess_demo/client/src/script/branches/Merge1013:114740-114780
/mess_demo/client/src/script/branches/Merge1070:115258-115477,115537
/mess_demo/cli ent/src/script/branches/Merge1246:125220-125281
更方便的方式,可以直接通过获取SVN两个版本之间的diff文本,来获取新版本的SVN提交是从哪些分支的Merge来的哪些SVN版本号。
Index:Client/GUI
============================================================================
---Client/GUI(revision 421527)
+++Client/GUI(revision 421528)
Property changes on:Client/GUI
----------------------------------
Modified:svn:mergeinfo
##-0,0+0,2##
Merged/mess_demo/client/src/script/branches/dev/Client/GUI:r415678
Merged/mess_demo/client/src/script/branches/dev_tmp_1023/Client/GUI:r405678
然后通过代码分析提取出diff文本中的分支合并信息,即可以作为判断分支合并来源的依据。综上可以从MergeInfo中获得,某一个SVN的提交,是从哪个分支的哪个SVN版本号Merge过来的了。
207、判断第一版本号集合中的各第一版本号是否位于所述第二版本号集合中。
具体的,通过基于所述第一版本号集合中各开发分支的第一bug单号确定待合并发布的内容;基于所述第二版本号集合中各发布分支的第二bug单号确定已合并发布的内容;遍历所述已合并发布的内容中是否存在所述待合并发布的内容;若不存在,则将所述待合并发布的内容对应的开发分支添加至发布分支中,若存在,则确定对应的发布分支合并开发分支是完整的,可以直接对发布分支进行发布处理。
在实际应用中,通过对比第一版本号集合A和第二版本号集合B,判断对于这个制作单而言,程序分支合并过程中是否遗漏
集合A为必须要合并的内容,集合B为所有已经合并的内容。因此集合B必须包含集合A,如果A中存在某个版本号,不存在于集合B,那么这个版本就是程序员漏合并的版本了;
从上述判断获取到是否存在漏合并的信息,如果有则按照提交人进行分组,使用消息推送工具发送给相关负责人。
208、若是,则将发布分支直接发布;
209、若否,则提取不在第二版本集合中的开发分支合并至发布分支中进行发布。
该步骤中,若否,则说明该开发分支属于发布分支中的遗漏分支,需要将该发布分支合并至发布分支中,以确定发布分支对应的程序是完整的,并进行发布。若位于第二版本号集合中,则确定该发布分支已合并完整,直接进行发布即可。
综上,通过获取待检测的开发分支的第一版本号集合以及与开发分支对应的发布分支的第二版本号集合,判断第一版本号集合中的各第一版本号是否位于第二版本号集合中,若是,则将所述发布分支直接发布;若否,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。通过这样的方法可以能够第一时间发现分支合并问题,同时能够让测试人员在代码合并后的分布分支进行主流程回归测试而不是全量的详细测试,即使在版本日要经历多次分支合并,也不担心出现遗漏的问题。这样最终能够大大节省分支合并检查时间,从而大大节省人力成本。
上面对本发明实施例中分支合并检测方法进行了描述,下面对本发明实施例中分支合并检测装置进行描述,请参阅图5,本发明实施例中分支合并检测装置一个实施例包括:
第一查询模块510,用于基于待检测的开发分支的开发单号确定与所述开发分支相关的第一版本号,得到第一版本号集合;
第二查询模块520,用于确定所述开发分支对应的发布分支的制作单号,并基于所述制作单号确定与所述发布分支相关的第二版本单号,得到第二版本号集合;
判断模块530,用于判断所述第一版本号集合中的各第一版本号是否位于所述第二版本号集合中;
发布模块540,用于在判断各第一版本号位于所述第二版本号集合中,则将所述发布分支直接发布;以及在判断存在第一版本号不位于所述第二版本号集合中,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。
本实施例通过获取待检测的开发分支的第一版本号集合以及与开发分支对应的发布分支的第二版本号集合,判断第一版本号集合中的各第一版本号是否位于第二版本号集合中,若是,则将所述发布分支直接发布;若否,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布,以解决现有的程序分支合并检测中,在检测时间较少的情况下容易出现合并遗漏的问题。
参照图6,为本发明提供的分支合并检测装置的第二个实施例,该更新装置包括:
第一查询模块510,用于基于待检测的开发分支的开发单号确定与所述开发分支相关的第一版本号,得到第一版本号集合;
第二查询模块520,用于确定所述开发分支对应的发布分支的制作单号,并基于所述制作单号确定与所述发布分支相关的第二版本单号,得到第二版本号集合;
判断模块530,用于判断所述第一版本号集合中的各第一版本号是否位于所述第二版本号集合中;
发布模块540,用于在判断各第一版本号位于所述第二版本号集合中,则将所述发布分支直接发布;以及在判断存在第一版本号不位于所述第二版本号集合中,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。
本实施例中,所述第一查询模块510包括:
第一确定单元511,用于确定待检测的开发分支的制作单号;
第一获取单元512,用于基于所述开发分支的制作单号获取所述开发分支最早的开发单的创建时间,以及所述开发单关联的第一bug单号;
第一提取单元513,用于基于所述第一bug单号在开发分支上递归遍历第一版本日志,并从所述第一版本日志中提取出与所述开发分支的制作单相关的第一版本号,得到第一版本号集合。
在本实施例中,所述第二查询模块520包括:
第二确定单元521,用于基于所述第一bug单号确定与所述开发分支对应的发布分支,并确定所述发布分支的制作单号;
第二获取单元522,用于基于所述发布分支的制作单号获取所述发布分支最早的开发单的创建时间,以及关联的第二bug单号;
第二提取单元523,用于基于所述第二bug单号在发布分支上递归遍历第二版本日志,并从所述第二版本日志中提取出与所述发布分支的制作单相关的第二版本号,得到第二版本号集合。
在本实施例中,所述第二提取单元523具体用于:
从所述第二版本日志中提取出与所述发布分支的制作单相关的版本号;
基于所述版本号确定对应的发布分支的内容,并提取所述发布分支的内容与所述开发分支之间的不同内容;
对所述不同内容进行解析,得到两者的合并信息;
从所述合并信息中确定来源版本号,得到第二版本号集合。
在本实施例中,所述判断模块530具体用于:
基于所述第一版本号集合中各开发分支的第一bug单号确定待合并发布的内容;
基于所述第二版本号集合中各发布分支的第二bug单号确定已合并发布的内容;
遍历所述已合并发布的内容中是否存在所述待合并发布的内容;
若不存在,则将所述待合并发布的内容对应的开发分支添加至发布分支中。
在本实施例中,所述分支合并检测装置还包括记录模块550,具体用于:
在检测到提交开发分支发布时,获取所述开发分支对应的版本号、所述开发分支的开发单号、开发单的创建时间和所述开发分支的bug单号;
将所述版本号、所述开发单号和所述bug单号进行关联,并记录于版本日志中。
在本实施例中,所述记录模块550具体还用于:
基于所述bug单号确定所述开发分支的开发内容;
基于所述开发内容,从所述开发分支的代码中提取对应的代码内容,并基于所述代码内容构建合并信息;
将所述合并信息与关联后的所述版本号、所述开发单号和所述bug单号记录于所述版本日志中。
本发明实施例中,所述分支合并检测装置运行上述分支合并检测方法,通过将开发分支和发布分支的所有信息形成集合,并记录到版本控制系统中的版本日志中,然后在进行合并检测时,基于开发分支和对应的发布分支的制作单号查询出对应的信息,例如bug单号、版本号等,通过对比这些信息即可判断出发布分支中的内容是否完整,以保证发布分支的完整性,利用版本号的方式来检测合并的开发分支的完整性,简化了现有的逐一内容比对的流程,缩短了发布合并的检测时间,提高了检测效率,快速识别遗漏分支。
本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述分支合并检测方法。该电子设备可以是服务器,也可以是终端设备。
参见图7所示,该电子设备包括处理器700和存储器7101,该存储器701存储有能够被处理器700执行的机器可执行指令,该处理器700执行机器可执行指令以实现上述分支合并检测方法。
进一步地,图7所示的电子设备还包括总线702和通信接口703,处理器700、通信接口703和存储器701通过总线702连接。
其中,存储器701可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口703(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线702可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器700可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器700中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器700可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器700读取存储器701中的信息,结合其硬件完成如下步骤:
基于待检测的开发分支的制作单号确定与所述开发分支相关的第一版本号,得到第一版本号集合;
确定所述开发分支对应的发布分支的制作单号,并基于所述发布分支的制作单号确定与所述发布分支相关的第二版本单号,得到第二版本号集合;
判断所述第一版本号集合中的各第一版本号是否位于所述第二版本号集合中;
若是,则将所述发布分支直接发布;
若否,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。
上述所述基于待检测的开发分支的制作单号确定与所述开发分支相关的第一版本号,得到第一版本号集合,包括:
确定待检测的开发分支的制作单号;
基于所述开发分支的制作单号获取所述开发分支最早的开发单的创建时间,以及所述开发单关联的第一bug单号;
基于所述第一bug单号在开发分支上递归遍历第一版本日志,并从所述第一版本日志中提取出与所述开发分支的制作单相关的第一版本号,得到第一版本号集合。
上述所述确定所述开发分支对应的发布分支的制作单号,并基于所述发布分支的制作单号确定与所述发布分支相关的第二版本单号,得到第二版本号集合,包括:
基于所述第一bug单号确定与所述开发分支对应的发布分支,并确定所述发布分支的制作单号;
基于所述发布分支的制作单号获取所述发布分支最早的开发单的创建时间,以及关联的第二bug单号;
基于所述第二bug单号在发布分支上递归遍历第二版本日志,并从所述第二版本日志中提取出与所述发布分支的制作单相关的第二版本号,得到第二版本号集合。
上述所述从所述第二版本日志中提取出与所述发布分支的制作单相关的第二版本号,得到第二版本号集合,包括:
从所述第二版本日志中提取出与所述发布分支的制作单相关的版本号;
基于所述版本号确定对应的发布分支的内容,并提取所述发布分支的内容与所述开发分支之间的不同内容;
对所述不同内容进行解析,得到两者的合并信息;
从所述合并信息中确定来源版本号,得到第二版本号集合。
上述所述判断所述第一版本号集合中的各第一版本号是否位于所述第二版本号集合中,包括:
基于所述第一版本号集合中各开发分支的第一bug单号确定待合并发布的内容;
基于所述第二版本号集合中各发布分支的第二bug单号确定已合并发布的内容;
遍历所述已合并发布的内容中是否存在所述待合并发布的内容;
若不存在,则将所述待合并发布的内容对应的开发分支添加至发布分支中。
上述在所述基于待检测的开发分支的制作单号确定与所述开发分支相关的第一版本号,得到第一版本号集合之前,还包括:
在检测到提交开发分支发布时,获取所述开发分支对应的版本号、所述开发分支的开发单号、开发单的创建时间和所述开发分支的bug单号;
将所述版本号、所述开发单号和所述bug单号进行关联,并记录于版本日志中。
上述在所述将所述版本号、所述开发单号和所述bug单号进行关联,并记录于版本日志中之后,还包括:
基于所述bug单号确定所述开发分支的开发内容;
基于所述开发内容,从所述开发分支的代码中提取对应的代码内容,并基于所述代码内容构建合并信息;
将所述合并信息与关联后的所述版本号、所述开发单号和所述bug单号记录于所述版本日志中。
综上,通过获取待检测的开发分支的第一版本号集合以及与开发分支对应的发布分支的第二版本号集合,判断第一版本号集合中的各第一版本号是否位于第二版本号集合中,若是,则将所述发布分支直接发布;若否,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。通过这样的方法基于版本号的方式来确定发布分支中是否存在所有需要的开发分支,从而简化了现有的合并发布检测流程,可以快速地对合并后的程序分支进行检测,提高了合并检测的效率,能及时发现合并遗漏的问题。
本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现如下步骤:
基于待检测的开发分支的制作单号确定与所述开发分支相关的第一版本号,得到第一版本号集合;
确定所述开发分支对应的发布分支的制作单号,并基于所述发布分支的制作单号确定与所述发布分支相关的第二版本单号,得到第二版本号集合;
判断所述第一版本号集合中的各第一版本号是否位于所述第二版本号集合中;
若是,则将所述发布分支直接发布;
若否,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。
上述所述基于待检测的开发分支的制作单号确定与所述开发分支相关的第一版本号,得到第一版本号集合,包括:
确定待检测的开发分支的制作单号;
基于所述开发分支的制作单号获取所述开发分支最早的开发单的创建时间,以及所述开发单关联的第一bug单号;
基于所述第一bug单号在开发分支上递归遍历第一版本日志,并从所述第一版本日志中提取出与所述开发分支的制作单相关的第一版本号,得到第一版本号集合。
上述所述确定所述开发分支对应的发布分支的制作单号,并基于所述发布分支的制作单号确定与所述发布分支相关的第二版本单号,得到第二版本号集合,包括:
基于所述第一bug单号确定与所述开发分支对应的发布分支,并确定所述发布分支的制作单号;
基于所述发布分支的制作单号获取所述发布分支最早的开发单的创建时间,以及关联的第二bug单号;
基于所述第二bug单号在发布分支上递归遍历第二版本日志,并从所述第二版本日志中提取出与所述发布分支的制作单相关的第二版本号,得到第二版本号集合。
上述所述从所述第二版本日志中提取出与所述发布分支的制作单相关的第二版本号,得到第二版本号集合,包括:
从所述第二版本日志中提取出与所述发布分支的制作单相关的版本号;
基于所述版本号确定对应的发布分支的内容,并提取所述发布分支的内容与所述开发分支之间的不同内容;
对所述不同内容进行解析,得到两者的合并信息;
从所述合并信息中确定来源版本号,得到第二版本号集合。
上述所述判断所述第一版本号集合中的各第一版本号是否位于所述第二版本号集合中,包括:
基于所述第一版本号集合中各开发分支的第一bug单号确定待合并发布的内容;
基于所述第二版本号集合中各发布分支的第二bug单号确定已合并发布的内容;
遍历所述已合并发布的内容中是否存在所述待合并发布的内容;
若不存在,则将所述待合并发布的内容对应的开发分支添加至发布分支中。
上述在所述基于待检测的开发分支的制作单号确定与所述开发分支相关的第一版本号,得到第一版本号集合之前,还包括:
在检测到提交开发分支发布时,获取所述开发分支对应的版本号、所述开发分支的开发单号、开发单的创建时间和所述开发分支的bug单号;
将所述版本号、所述开发单号和所述bug单号进行关联,并记录于版本日志中。
上述在所述将所述版本号、所述开发单号和所述bug单号进行关联,并记录于版本日志中之后,还包括:
基于所述bug单号确定所述开发分支的开发内容;
基于所述开发内容,从所述开发分支的代码中提取对应的代码内容,并基于所述代码内容构建合并信息;
将所述合并信息与关联后的所述版本号、所述开发单号和所述bug单号记录于所述版本日志中。
综上,通过获取待检测的开发分支的第一版本号集合以及与开发分支对应的发布分支的第二版本号集合,判断第一版本号集合中的各第一版本号是否位于第二版本号集合中,若是,则将所述发布分支直接发布;若否,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。通过这样的方法基于版本号的方式来确定发布分支中是否存在所有需要的开发分支,从而简化了现有的合并发布检测流程,可以快速地对合并后的程序分支进行检测,提高了合并检测的效率,能及时发现合并遗漏的问题。
本发明实施例所提供的分支合并检测方法及相关设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种分支合并检测方法,其特征在于,所述分支合并检测方法包括:
基于待检测的开发分支的制作单号确定与所述开发分支相关的第一版本号,得到第一版本号集合;
确定所述开发分支对应的发布分支的制作单号,并基于所述发布分支的制作单号确定与所述发布分支相关的第二版本单号,得到第二版本号集合;
判断所述第一版本号集合中的各第一版本号是否位于所述第二版本号集合中;
若是,则将所述发布分支直接发布;
若否,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。
2.根据权利要求1所述的分支合并检测方法,其特征在于,所述基于待检测的开发分支的制作单号确定与所述开发分支相关的第一版本号,得到第一版本号集合,包括:
确定待检测的开发分支的制作单号;
基于所述开发分支的制作单号获取所述开发分支最早的开发单的创建时间,以及所述开发单关联的第一bug单号;
基于所述第一bug单号在开发分支上递归遍历第一版本日志,并从所述第一版本日志中提取出与所述开发分支的制作单相关的第一版本号,得到第一版本号集合。
3.根据权利要求2所述的分支合并检测方法,其特征在于,所述确定所述开发分支对应的发布分支的制作单号,并基于所述发布分支的制作单号确定与所述发布分支相关的第二版本单号,得到第二版本号集合,包括:
基于所述第一bug单号确定与所述开发分支对应的发布分支,并确定所述发布分支的制作单号;
基于所述发布分支的制作单号获取所述发布分支最早的开发单的创建时间,以及关联的第二bug单号;
基于所述第二bug单号在发布分支上递归遍历第二版本日志,并从所述第二版本日志中提取出与所述发布分支的制作单相关的第二版本号,得到第二版本号集合。
4.根据权利要求3所述的分支合并检测方法,其特征在于,所述从所述第二版本日志中提取出与所述发布分支的制作单相关的第二版本号,得到第二版本号集合,包括:
从所述第二版本日志中提取出与所述发布分支的制作单相关的版本号;
基于所述版本号确定对应的发布分支的内容,并提取所述发布分支的内容与所述开发分支之间的不同内容;
对所述不同内容进行解析,得到两者的合并信息;
从所述合并信息中确定来源版本号,得到第二版本号集合。
5.根据权利要求3所述的分支合并检测方法,其特征在于,所述判断所述第一版本号集合中的各第一版本号是否位于所述第二版本号集合中,包括:
基于所述第一版本号集合中各开发分支的第一bug单号确定待合并发布的内容;
基于所述第二版本号集合中各发布分支的第二bug单号确定已合并发布的内容;
遍历所述已合并发布的内容中是否存在所述待合并发布的内容;
若不存在,则将所述待合并发布的内容对应的开发分支添加至发布分支中。
6.根据权利要求1-5中任一项所述的分支合并检测方法,其特征在于,在所述基于待检测的开发分支的制作单号确定与所述开发分支相关的第一版本号,得到第一版本号集合之前,还包括:
在检测到提交开发分支发布时,获取所述开发分支对应的版本号、所述开发分支的开发单号、开发单的创建时间和所述开发分支的bug单号;
将所述版本号、所述开发单号和所述bug单号进行关联,并记录于版本日志中。
7.根据权利要求6所述的分支合并检测方法,其特征在于,在所述将所述版本号、所述开发单号和所述bug单号进行关联,并记录于版本日志中之后,还包括:
基于所述bug单号确定所述开发分支的开发内容;
基于所述开发内容,从所述开发分支的代码中提取对应的代码内容,并基于所述代码内容构建合并信息;
将所述合并信息与关联后的所述版本号、所述开发单号和所述bug单号记录于所述版本日志中。
8.一种分支合并检测装置,其特征在于,所述分支合并检测装置包括:
第一查询模块,用于基于待检测的开发分支的开发单号确定与所述开发分支相关的第一版本号,得到第一版本号集合;
第二查询模块,用于确定所述开发分支对应的发布分支的制作单号,并基于所述制作单号确定与所述发布分支相关的第二版本单号,得到第二版本号集合;
判断模块,用于判断所述第一版本号集合中的各第一版本号是否位于所述第二版本号集合中;
发布模块,用于在判断各第一版本号位于所述第二版本号集合中,则将所述发布分支直接发布;以及在判断存在第一版本号不位于所述第二版本号集合中,则提取不在所述第二版本集合中的开发分支合并至所述发布分支中进行发布。
9.一种电子设备,其特征在于,所述带着你设备包括:存储器和至少一个处理器,所述存储器中存储有指令;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述电子设备执行如权利要求1-7中任一项所述的分支合并检测方法的各个步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现如权利要求1-7中任一项所述分支合并检测方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310384872.1A CN116483703A (zh) | 2023-04-03 | 2023-04-03 | 分支合并检测方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310384872.1A CN116483703A (zh) | 2023-04-03 | 2023-04-03 | 分支合并检测方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116483703A true CN116483703A (zh) | 2023-07-25 |
Family
ID=87211246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310384872.1A Pending CN116483703A (zh) | 2023-04-03 | 2023-04-03 | 分支合并检测方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116483703A (zh) |
-
2023
- 2023-04-03 CN CN202310384872.1A patent/CN116483703A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109388566B (zh) | 一种代码覆盖率分析方法、装置、设备及存储介质 | |
CN110413506A (zh) | 测试用例推荐方法、装置、设备及存储介质 | |
CN102053906A (zh) | 用于收集程序运行时信息的系统和方法 | |
CN106844730B (zh) | 文件内容的显示方法及装置 | |
CN109669858B (zh) | 程序死锁的测试方法、装置和设备 | |
CN115269444B (zh) | 代码静态检测方法、装置及服务器 | |
CN106980572B (zh) | 分布式系统的在线调试方法和系统 | |
CN112069073A (zh) | 测试用例的管理方法、终端和存储介质 | |
CN111611154B (zh) | 一种回归测试的方法、装置和设备 | |
CN116756037A (zh) | 异常代码定位系统、方法、设备及计算机可读存储介质 | |
CN115794638A (zh) | 基于代码变更分析引擎的测试方法、系统及计算机设备 | |
CN116483703A (zh) | 分支合并检测方法、装置、电子设备及存储介质 | |
CN111984444A (zh) | 一种异常信息的处理方法和装置 | |
CN113868137A (zh) | 埋点数据的处理方法、装置、系统和服务器 | |
CN114676061A (zh) | 一种基于知识图谱自动化固件检测方法 | |
CN113656318A (zh) | 软件版本测试方法、装置及计算机设备 | |
CN110442370B (zh) | 一种测试用例查询方法及装置 | |
CN114064510A (zh) | 功能测试方法、装置、电子设备和存储介质 | |
CN112597040A (zh) | 一种界面自动化测试方法、装置及电子设备 | |
CN116414610B (zh) | 异常日志片段的获取方法、装置、设备及存储介质 | |
CN112486823B (zh) | 错误码的校验方法、装置、电子设备及可读存储介质 | |
CN113220595B (zh) | 测试方法及设备 | |
CN117076448A (zh) | 基线表的检查方法、装置及电子设备 | |
Beyer et al. | P3: A Dataset of Partial Program Patches | |
CN117194237A (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 |