分支提交差异检测方法及装置的制造方法

文档序号:10512087阅读:178来源:国知局
分支提交差异检测方法及装置的制造方法
【专利摘要】本发明公开了一种分支提交差异检测方法及装置,涉及差异检测技术领域,获取两条分支上为相同插件提交的补丁文件,所述补丁文件中包括对源代码进行修改的修改信息;根据所述修改信息比较所述两条分支为相同插件提交的补丁文件之间的差异,以实现对所述两条分支提交的补丁文件之间的差异检测。本发明不再通过bug号来检测不同分支的提交差异,而是通过补丁文件中的修改信息来比较各条分支为相同插件提交的补丁文件之间的差异,从而保证了对比结果真实可靠。
【专利说明】
分支提交差异检测方法及装置
技术领域
[0001]本发明涉及差异检测技术领域,特别涉及一种分支提交差异检测方法及装置。
【背景技术】
[0002]为满足发布不同版本的android等系统的需求,研发过程中会使用多条分支同步开发集成,故而各条分支均会为各插件(即所述android等系统的组成部分)提交补丁文件(patch),对于项目管理人员来说,如何有效的识别不同分支的提交差异是保证集成的关键问题。
[0003]在现有方案中,主要是在各条分支的提交记录中筛选出bug号,对bug号进行对比的方式确定提交差异,但是bug号容易漏写、错写,或者一个bug号对应多个不同补丁的情况下,无法完全保证对比结果真实可靠。

【发明内容】

[0004]本发明实施方式提供一种分支提交差异检测方法及装置,用以解决现有技术中在bug号容易漏写、错写,或者一个bug号对应多个不同补丁的情况下,无法完全保证对比结果真实可靠的缺陷。
[0005]本发明实施方式提供一种分支提交差异检测方法,所述方法包括:
[0006]获取两条分支上为相同插件提交的补丁文件,所述补丁文件中包括对源代码进行修改的修改信息;
[0007]根据所述修改信息比较所述两条分支为相同插件提交的补丁文件之间的差异,以实现对所述两条分支提交的补丁文件之间的差异检测。
[0008]本发明实施方式提供一种分支提交差异检测装置,所述装置包括:
[0009]文件获取单元,用于获取两条分支上为相同插件提交的补丁文件,所述补丁文件中包括对源代码进行修改的修改信息;
[0010]差异比较单元,用于根据所述修改信息比较所述两条分支为相同插件提交的补丁文件之间的差异,以实现对所述两条分支提交的补丁文件之间的差异检测。
[0011]本发明不再通过bug号来检测不同分支的提交差异,而是通过补丁文件中的修改信息来比较各条分支为相同插件提交的补丁文件之间的差异,从而保证了对比结果真实可
A+-.与巨O
【附图说明】
[0012]为了更清楚地说明本发明实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0013]图1是本发明一种实施方式的分支提交差异检测方法的流程图;
[0014]图2是本发明一种实施方式的分支提交差异检测方法的流程图;
[0015]图3是本发明一种实施方式的分支提交差异检测装置的结构框图。
【具体实施方式】
[0016]下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0017]图1是本发明一种实施方式的分支提交差异检测方法的流程图;参照图1,所述方法包括:
[0018]SlOl:获取两条分支上为相同插件提交的补丁文件,所述补丁文件中包括对源代码进行修改的修改信息;
[0019]可理解的是,Linuxpatch是开源社区在进行内核维护时,为了标准化各个贡献者提交规范的一种格式,在代码管理工具中采用类似机制,对每个提交都可以生成补丁文件(patch),每个patch记录了本次修改的修改信息,可以通过传递patch的方式共享修改。
[0020]需要说明的是,所述源代码是由若干个插件所组成,故而,补丁文件通常是针对至少部分插件所提交,为便于反映各补丁文件是为哪个插件提交,本实施方式中,所述修改信息包括:插件名称(即用于反映修改的对象)、修改行数和修改内容,当然,还可包括其他信息,本实施方式对此不加以限制。
[0021]现有技术中通常是由当前分支下载其他分支提交的bug号,再实现检测,若直接通过该方式,会占用各分支操作同步代码的时间和存储空间,而本实施方式的方法的执行主体为代码服务器(即用于存储各条分支提交补丁文件的服务器),无需占用各分支操作同步代码的时间和存储空间,能够更加快速方便地实现对各条分支提交补丁文件之间的差异检测。
[0022]S102:根据所述修改信息比较所述两条分支为相同插件提交的补丁文件之间的差异,以实现对所述两条分支提交的补丁文件之间的差异检测。
[0023]需要说明的是,所述修改信息能够直接反映补丁文件对源代码的修改,故而,本实施方式中可通过该修改信息比较各条分支为相同插件提交的补丁文件之间的差异。
[0024]本实施方式不再通过bug号来检测不同分支的提交差异,而是通过补丁文件中的修改信息来比较两条分支为相同插件提交的补丁文件之间的差异,从而保证了对比结果真实可靠。
[0025]图2是本发明一种实施方式的分支提交差异检测方法的流程图;参照图2,所述方法包括:
[0026]S201:通过git rev-parse命令获取所述两条分支上提交的补丁文件;
[0027]可理解的是,由于本实施方式的执行主体为代码服务器,故而,可直接通过gitrev-parse命令获取各条分支上提交的补丁文件。
[0028]S202:根据所述插件名称为所述两条分支上提交的补丁文件进行划分,以获得所述两条分支上为各插件提交的补丁文件;
[0029]需要说明的是,在通过gitrev-parse命令获取补丁文件时,通常只能直接获取分支上提交的补丁文件;
[0030]为便于确定补丁文件是为哪个插件提交的,本实施方式中,可根据插件名称为各条分支上提交的补丁文件进行划分,以获得所述两条分支上为各插件提交的补丁文件。
[0031]例如,某一条支路joygame上提交的补丁文件可按照修改信息中的以下插件名称进行划分:
[0032]joygame/amlogic/tools/UbootEnvEditor.git: alpha
[0033]joygame/bagder/curl.git: alpha
[0034]joygame/device/amlogic.git: alpha
[0035]joygame/device/other.git:alpha_hk
[0036]S203:将所述两条分支上为插件名称相同的插件提交的补丁文件作为所述两条分支为相同插件提交的补丁文件,所述补丁文件中包括对源代码进行修改的修改信息;
[0037]在具体实现中,为便于确定所述两条分支为相同插件提交的补丁文件,本实施方式采用插件名称来进行判断。
[0038]S204:判断所述两条分支为相同插件提交的补丁文件之间的修改行数和修改内容是否相同;
[0039]可理解的是,比较所述两条支路为相同插件提交的补丁文件之间的差异,可直接通过git cherry命令,但由于git cherry命令是对代码进行比较的命令,若对所有相同插件提交的补丁文件之间的差异均通过git cherry命令来实现,会导致整个差异检测过程的时间周期过长,故而,本实施方式分为两级检测,先检测修改信息中的修改行数和修改内容,在修改行数和修改内容不同时,直接认定为存在差异,在修改行数和修改内容相同后,再通过git cherry命令进行比较,从而有效地降低了差异检测过程的时间周期。
[0040]S205:在所述修改行数和修改内容不同时,认定所述两条分支为相同插件提交的补丁文件存在差异;
[0041 ] S206:在所述修改行数和修改内容相同时,通过git cherry命令比较所述两条分支为相同插件提交的补丁文件之间的差异。
[0042]在具体实现中,gitcherry命令的差异结果可参考:
[0043]-30bbel632bf59729d5f5486e3a9b4fe663352462
[0044]+8cl6fff2f9cf34ce5febb8c4602fddc23f2e41f0
[0045]+a025820b45dbb5886c384c2c22d91595f31521ab
[0046]+76056dl8fa59a78250a4fc73ea99ba5601e9fl89
[0047]+9acf063015e8e83211974fb5c8a341bed2b9c5a8
[0048]+7528dbf05f26ed70428e76003261b6aa3e9balf7
[0049]+8f94550233a5b97b2975721ed960099a255976c4
[0050]+6358323b63737bb02d70ad45c82c2cdf2d760949[OO51 ]其中,“+”为存在差异,为不存在差异。
[0052]可理解的是,在步骤S206之后,还可根据所述两条分支提交的补丁文件之间的差异检测结果生成差异检测报告,当然,所述差异检测报告中还可包括:所述两条分支提交的补丁文件的人员信息、提交时间等信息,本实施方式对此不加以限制。
[0053 ]当然,还可通过其他方式实现,本实施方式对此不加以限制。
[0054]对于方法实施方式,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施方式并不受所描述的动作顺序的限制,因为依据本发明实施方式,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施方式均属于优选实施方式,所涉及的动作并不一定是本发明实施方式所必须的。
[0055]图3是本发明一种实施方式的分支提交差异检测装置的结构框图;参照图3,所述装置包括:
[0056]文件获取单元301,用于获取两条分支上为相同插件提交的补丁文件,所述补丁文件中包括对源代码进行修改的修改信息;
[0057]差异比较单元302,用于根据所述修改信息比较所述两条分支为相同插件提交的补丁文件之间的差异,以实现对所述两条分支提交的补丁文件之间的差异检测。
[0058]在本发明的一种可选实施方式中,所述装置还包括:
[0059]报告生成单元,用于根据所述两条分支提交的补丁文件之间的差异检测结果生成差异检测报告。
[0060]在本发明的一种可选实施方式中,所述修改信息包括:插件名称、修改行数和修改内容;
[0061]所述差异比较单元,进一步用于判断所述两条分支为相同插件提交的补丁文件之间的修改行数和修改内容是否相同;在所述修改行数和修改内容不同时,认定所述两条分支为相同插件提交的补丁文件存在差异。
[0062]在本发明的一种可选实施方式中,所述差异比较单元,还用于在所述修改行数和修改内容相同时,通过git cherry命令比较所述两条分支为相同插件提交的补丁文件之间的差异。
[0063]在本发明的一种可选实施方式中,所述文件获取单元,还用于通过git rev-parse命令获取所述两条分支上提交的补丁文件;根据所述插件名称为所述两条分支上提交的补丁文件进行划分,以获得所述两条分支上为各插件提交的补丁文件;将所述两条分支上为插件名称相同的插件提交的补丁文件作为所述两条分支为相同插件提交的补丁文件。
[0064]对于系统实施方式而言,由于其与方法实施方式基本相似,所以描述的比较简单,相关之处参见方法实施方式的部分说明即可。
[0065]以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0066]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施方式或者实施方式的某些部分所述的方法。
[0067]最后应说明的是:以上实施方式仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施方式对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施方式技术方案的精神和范围。
【主权项】
1.一种分支提交差异检测方法,其特征在于,所述方法包括: 获取两条分支上为相同插件提交的补丁文件,所述补丁文件中包括对源代码进行修改的修改信息; 根据所述修改信息比较所述两条分支为相同插件提交的补丁文件之间的差异,以实现对所述两条分支提交的补丁文件之间的差异检测。2.根据权利要求1所述的方法,其特征在于,所述根据所述修改信息比较所述两条分支为相同插件提交的补丁文件之间的差异,以实现对所述两条分支提交的补丁文件之间的差异检测之后,所述方法还包括: 根据所述两条分支提交的补丁文件之间的差异检测结果生成差异检测报告。3.根据权利要求1所述的方法,其特征在于,所述修改信息包括:插件名称、修改行数和修改内容; 所述根据所述修改信息比较所述两条分支为相同插件提交的补丁文件之间的差异,进一步包括: 判断所述两条分支为相同插件提交的补丁文件之间的修改行数和修改内容是否相同; 在所述修改行数和修改内容不同时,认定所述两条分支为相同插件提交的补丁文件存在差异。4.根据权利要求3所述的方法,其特征在于,所述判断所述两条分支为相同插件提交的补丁文件之间的修改行数和修改内容是否相同之后,所述方法还包括: 在所述修改行数和修改内容相同时,通过git cherry命令比较所述两条分支为相同插件提交的补丁文件之间的差异。5.根据权利要求3?4中任一项所述的方法,其特征在于,所述获取两条分支上为相同插件提交的补丁文件,进一步包括: 通过git rev-parse命令获取所述两条分支上提交的补丁文件; 根据所述插件名称为所述两条分支上提交的补丁文件进行划分,以获得所述两条分支上为各插件提交的补丁文件; 将所述两条分支上为插件名称相同的插件提交的补丁文件作为所述两条分支为相同插件提交的补丁文件。6.一种分支提交差异检测装置,其特征在于,所述装置包括: 文件获取单元,用于获取两条分支上为相同插件提交的补丁文件,所述补丁文件中包括对源代码进行修改的修改信息; 差异比较单元,用于根据所述修改信息比较所述两条分支为相同插件提交的补丁文件之间的差异,以实现对所述两条分支提交的补丁文件之间的差异检测。7.根据权利要求6所述的装置,其特征在于,所述装置还包括: 报告生成单元,用于根据所述两条分支提交的补丁文件之间的差异检测结果生成差异检测报告。8.根据权利要求6所述的装置,其特征在于,所述修改信息包括:插件名称、修改行数和修改内容; 所述差异比较单元,进一步用于判断所述两条分支为相同插件提交的补丁文件之间的修改行数和修改内容是否相同;在所述修改行数和修改内容不同时,认定所述两条分支为相同插件提交的补丁文件存在差异。9.根据权利要求8所述的装置,其特征在于,所述差异比较单元,还用于在所述修改行数和修改内容相同时,通过git cherry命令比较所述两条分支为相同插件提交的补丁文件之间的差异。10.根据权利要求8?9中任一项所述的装置,其特征在于,所述文件获取单元,还用于通过git rev-parse命令获取所述两条分支上提交的补丁文件;根据所述插件名称为所述两条分支上提交的补丁文件进行划分,以获得所述两条分支上为各插件提交的补丁文件;将所述两条分支上为插件名称相同的插件提交的补丁文件作为所述两条分支为相同插件提交的补丁文件。
【文档编号】G06F11/36GK105868099SQ201510868847
【公开日】2016年8月17日
【申请日】2015年12月1日
【发明人】石雪峰
【申请人】乐视致新电子科技(天津)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1