CN105302533A - 代码同步方法和装置 - Google Patents
代码同步方法和装置 Download PDFInfo
- Publication number
- CN105302533A CN105302533A CN201410362545.7A CN201410362545A CN105302533A CN 105302533 A CN105302533 A CN 105302533A CN 201410362545 A CN201410362545 A CN 201410362545A CN 105302533 A CN105302533 A CN 105302533A
- Authority
- CN
- China
- Prior art keywords
- code
- branch
- trunk
- conflict
- revisions number
- 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.)
- Granted
Links
Abstract
本发明公开了一种代码同步方法和装置。其中,代码同步方法包括:获取目标分支的同步参数,其中,目标分支为对分支代码进行编辑的分支,目标分支具有预先配置的同步参数;从同步参数中获取冲突处理方式,并根据目标分支的分支属性和同步参数获取主干同步范围;获取目标分支上的分支代码;以及将主干同步范围内的主干代码同步至分支代码,并按照冲突处理方式处理同步过程中的冲突。通过本发明解决了现有技术中主干代码和分支代码同步需要人工操作带来的效率低的技术问题,从而达到了降低人工操作成本、提高版本发布效率的技术效果。
Description
技术领域
本发明涉及软件工程领域,具体而言,涉及一种代码同步方法和装置。
背景技术
目前在分支开发模式下,开发人员一般通过手动方式来将主干上的代码更新同步到分支上,以使用SVN版本控制工具对项目进行维护为例,主干和分支的同步的主要过程在图1中示出,如图1所示,具体过程如下:
1)从服务器上签出(即,checkout)分支代码到本地;
2)选择主干上指定范围的修订号(即,revision号),将签出的分支代码合入主干,实现主干代码同步分支上的变更内容。其中,起始:一般是初始创建分支时的修订号,或者是最近一次同步时主干的修订号。终止:推荐的基线号或者是主干最新修订号,其中,所谓基线号是指测试通过或版本发布后的主干的修订号;
3)判断同步过程是否有冲突,若有冲突,则可通过SVN选项或者手动修改代码来解决冲突;
4)将解决冲突后的代码或变更后的代码提交到分支上。
从上述描述可以看出,现有技术中进行主干和分支同步的技术方案存在以下缺点:
1)需要开发人员手动操作,人工操作成本高;
2)如果开发人员经常性地会忘记同步,当分支版本开发周期越长,与主干上的差异就会越多,累积的冲突就可能越多,导致最后版本发布时所要解决的冲突就越多越复杂,影响版本发布效率;
3)同步过程中,开发人员需要明确知道待同步的主干版本范围,否则容易出现代码漏合或者多合入的问题,两者都会造成版本出现问题,严重影响版本质量和效率;
针对相关技术中主干代码和分支代码同步需要人工操作带来的效率低的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种代码同步方法和装置,以至少解决现有技术中主干代码和分支代码同步需要人工操作带来的效率低的技术问题。
根据本发明实施例的一个方面,提供了一种代码同步方法。
根据本发明实施例的代码同步方法包括:获取目标分支的同步参数,其中,所述目标分支为对分支代码进行编辑的分支,所述目标分支具有预先配置的所述同步参数;从所述同步参数中获取冲突处理方式,并根据所述目标分支的分支属性和所述同步参数获取主干同步范围;获取所述目标分支上的所述分支代码;以及将所述主干同步范围内的主干代码同步至所述分支代码,并按照所述冲突处理方式处理同步过程中的冲突。
根据本发明实施例的另一方面,还提供了一种代码同步装置。
根据本发明实施例的代码同步装置包括:第一获取单元,用于获取目标分支的同步参数,其中,所述目标分支为对分支代码进行编辑的分支,所述目标分支具有预先配置的所述同步参数;第二获取单元,用于从所述同步参数中获取冲突处理方式,并根据所述目标分支的分支属性和所述同步参数获取主干同步范围;第三获取单元,用于获取所述目标分支上的所述分支代码;以及同步单元,用于将所述主干同步范围内的主干代码同步至所述分支代码,并按照所述冲突处理方式处理同步过程中的冲突。
在本发明实施例中,采用获取目标分支的同步参数,其中,所述目标分支为对所述分支代码进行编辑的分支,所述目标分支具有预先配置的所述同步参数;从所述同步参数中获取冲突处理方式,并根据所述目标分支的分支属性和所述同步参数获取主干同步范围;获取所述目标分支上的所述分支代码;以及将所述主干同步范围内的所述主干代码同步至所述分支代码,并按照所述冲突处理方式处理同步过程中的冲突。通过预先配置分支的同步参数,并按照同步参数将主干代码同步至分支代码,达到了主干同步分支可以由版本控制系统自动执行目的,进而解决了现有技术中主干代码和分支代码同步需要人工操作带来的效率低的技术问题,从而达到了降低人工操作成本、提高版本发布效率的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据现有技术的一种代码同步的流程图;
图2是根据本发明实施例的代码同步方法的流程图;
图3是根据本发明又一实施例的代码同步方法的流程图;以及
图4是根据本发明实施例的代码同步装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
对本发明实施例中所涉及的技术术语做如下解释:
1、版本控制系统
版本控制系统用于维护文件的所有版本,使用该系统,可以回到各文件之前的修订版本,还可以比较任意两个版本以查看它们之间的变化。本发明实施例所涉及的版本控制系统需要支持分支开发模式,常用的如SVN(Subversion),git等,在本发明实施例中以采用SVN作为版本控制工具进行说明。
2、分支开发
当一个项目下有多个迭代(一系列需求的集合)需要进行开发时,为了降低开发过程中不同迭代之间代码变更的影响,提高开发效率,则需要从主干上创建若干个副本(即分支)来进行并行开发,即分支开发。
3、主干同步分支
在分支开发模式下,为了确保最终发布代码的稳定性,每个分支开发完成后,需要将变更的代码提交回主干,而其它未完成的分支,则需要定期将主干上的更新同步到分支上,避免该分支最后发布时,缺少了其它已发布分支的特性。
4、冲突策略
在进行文件提交的过程中,可能会由于多用户更新了文件中的一些相同行而发生了冲突,在某些情况下,可以选择一些选项来解决冲突,如mine-full,theris-full,mine-confilct和theirs-conflict。若无法自动解决冲突,用户就只能手动更改文件来解决冲突。
5、主干稳定修订号(revision)
在分支开发模式下,主干代码会不断同步发布分支上的变更内容,同步过程并不能确保没有引入新的问题,所以通常情况下,分支合入主干后,会对主干的版本进行测试(可通过持续集成进行),测试通过或者版本发布后,才能确保当前修订号为稳定的版本,可以提供给其它未发布的分支进行同步,此时主干的修订号即称为稳定修订号。
实施例1
根据本发明实施例,提供了一种可以通过本申请装置实施例执行的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明实施例,提供了一种代码同步方法,图2是根据本发明实施例的代码同步方法的流程图,如图2所示,该代码同步方法包括如下步骤S202至步骤S208:
S202:获取目标分支的同步参数,其中,目标分支为对分支代码进行编辑的分支,目标分支具有预先配置的同步参数,在分支开发模式下,一个主干可以具有多个分支,当需要将主干代码同步至某个目标分支上时,可以先从预先配置的同步参数中获取到这个目标分支的同步参数,同步参数主要用于指导后续进行的主干代码与分支代码的同步,在本发明实施例中,该同步参数主要包括以下几项:
(1)同步频率:
可以根据实际情况来配置主干同步分支的频率(比如,可以设置为一天一次),实际应用中可以根据项目的开发周期以及主干的变更频率而定,如果是较大的且主干经常会有变更的项目,则同步的频率可以设置较高,以避免冲突的累积。
(2)主干同步范围:
此处主要配置同步的终止修订号,默认情况下设置为主干最新修订号即可,若主干上代码经常不稳定的情况下,则需要录入主干稳定修订号作为其它分支的同步终止修订号,以确保同步后不会引入主干上的未修复的BUG。
(3)默认冲突解决策略:
用于配置同步出现冲突时,分支默认采用的冲突解决策略,该冲突解决策略主要是针对整个分支而言的,相当于全局策略。
(4)自定义冲突解决策略:
用于配置同步出现冲突时,分支下指定的路径或指定文件后缀等可识别的规则,所采用的冲突解决策略略,该冲突解决策略主要是针对分支下的指定路径或指定文件而言的,相当于局部策略。
(5)冲突提交策略:
为满足不同的需要,在本发明实施例中,可以将冲突提交策略设置为包括以下多项中的至少一项:
A、仅邮件通知出现冲突,但不提交出现同步冲突的分支代码;
B、无冲突时提交分支代码;
C、有冲突时按冲突解决策略对同步过程中出现的冲突进行处理,然后提交解决冲突后的分支代码。
S204:从同步参数中获取冲突处理方式,并根据目标分支的分支属性和同步参数获取主干同步范围,即,从同步参数中获取冲突解决策略,并获取同步过程中所需的主干同步的起始修订号和终止修订号。
S206:获取目标分支上的分支代码,具体地,可以从服务器上签出(checkout)目标分支的分支代码到本地目录下,作为工作副本,后续用来同步。
S208:将主干同步范围内的主干代码同步至分支代码,并按照冲突处理方式处理同步过程中的冲突。即,将起始修订号至终止修订号范围内的主干代码同步至分支代码,并按照冲突处理方式处理同步过程中的冲突,其中,所执行的同步操作可以在分支代码的工作副本目录下进行,可以使用SVN命令行执行同步操作,具体命令可以为:#svnmerge$trunkPath-r$startRev:$endRev。
本发明实施例所提供的代码同步方法,通过预先配置分支的同步参数,并按照同步参数将主干代码同步至分支代码,达到了主干同步分支可以由版本控制系统自动执行目的,进而解决了现有技术中主干代码和分支代码同步需要人工操作带来的效率低的技术问题,从而达到了降低人工操作成本、提高版本发布效率的技术效果。
其中,根据目标分支的分支属性和同步参数获取主干同步范围包括:从分支属性中查询主干同步范围的起始修订号;按照同步参数查询主干同步范围的终止修订号;以及确定起始修订号至终止修订号为主干同步范围。
具体地,从分支属性中查询主干同步范围的起始修订号主要是获取创建目标分支时主干代码的修订号,或获取上一次将主干代码同步至分支代码时主干代码的最大修订号,其中,可以通过SVN命令查询目标分支的分支属性,从中获取到该目标分支上一次从主干同步的主干代码的最大修订号,如果该目标分支是第一次与主干进行同步,该从分支属性中获取该目标分支从主干拉取下来时的修订号(即,创建目标分支时主干代码的修订号),然后,确定获取到的修订号为起始修订号。
按照同步参数查询主干同步范围的终止修订号主要是:首先,判断同步参数中的目标属性是否为第一预设属性,其中,目标属性为终止修订号的属性,第一预设属性表示将主干代码的稳定修订号作为终止修订号,在判断出目标属性不为第一预设属性的情况下,获取主干代码的当前最大修订号,或在判断目标属性为第一预设属性的情况下,获取主干代码的最大稳定修订号,即,判断同步参数中是否将主干代码的稳定修订号作为终止修订号,如果确定将主干代码的稳定修订号作为终止修订号,则查询版本控制系统中当前主干所录入的最新稳定的修订号(即,最大稳定修订号),否则,查询主干上的最新修订号(即,当前最大修订号),然后,确定获取到的修订号为终止修订号。
图3是根据本发明又一实施例的代码同步方法的流程图,如图3所示,在将主干同步范围内的主干代码同步至分支代码过程中,本发明实施例所提供的代码同步方法还包括:判断主干代码和分支代码在同步过程中是否出现冲突,具体地,可以根据SVN的提示结果判断是否有冲突,其中,在将主干同步范围内的主干代码同步至分支代码过程中,SVN会提示出是否有冲突,如果SVN提示出现冲突的话,则判断出主干代码和分支代码在同步过程中出现冲突,如果SVN提示未出现冲突的话,则相应地判断出主干代码和分支代码在同步过程中未出现冲突,也可以采用其它能够进行冲突判断的方式,此处不再赘述,其中,在判断出主干代码和分支代码在同步过程中出现冲突的情况下,按照冲突处理方式处理同步过程中的冲突。
具体地,在本发明实施例中,冲突处理方式主要包括第一处理方式和第二处理方式,在按照冲突处理方式处理同步过程中的冲突过程中,可以先判断同步过程中的冲突是文件冲突还是树冲突,文件冲突是指当两名(或更多)开发人员修改了同一个文件中相邻或相同的行时就出发生文件冲突,树冲突是指当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对他们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突,如果判断出同步过程中的冲突是文件冲突,则按照第一处理方式处理同步过程中的冲突,该第一处理方式是预先设置的解决文件冲突的冲突解决策略,如果判断出同步过程中的冲突是树冲突,则按照第二处理方式处理同步过程中的冲突,该第二处理方式是预先设置的解决树冲突的冲突解决策略,在本发明实施例中,第二处理方式可以是跳过对树冲突的处理,直接将树冲突标记为“已解决”。
进一步地,在按照冲突处理方式处理同步过程中的冲突之后,或在判断出主干代码和分支代码在同步过程中未出现冲突的情况下,代码同步方法还包括:判断是否签入与主干代码同步后的分支代码,即,判断是否提交与主干代码同步后的分支代码,具体地,可以获取同步参数中的提交标识,然后判断获取到的提交标识是第一预设标识还是第二预设标识,比如:可以以第一预设标识“1”表示需要提交,以第二预设标识“0”表示不需要提交,在判断出签入与主干代码同步后的分支代码的情况下,签入与主干代码同步后的分支代码。
更进一步地,在签入与主干代码同步后的分支代码之后,或在判断出不签入与主干代码同步后的分支代码的情况下,本发明实施例的代码同步方法还包括:获取主干代码同步至分支代码的同步结果,该同步结果主要包括是否已提交代码,合并的文件个数,合并过程中出现的冲突文件个数以及文件冲突详细信息等,该同步结果可以以邮件形式或其它形式反馈给用户,用户在收到结果邮件后,可以核实邮件中的冲突情况,分析冲突,总结是否可以通过配置冲突解决策略来减少后续的人工处理情况,从而达到通过不断优化策略,提升同步效率的目的。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述代码同步方法的代码同步装置,该代码同步装置主要用于执行本发明实施例上述内容所提供的代码同步方法,以下对本发明实施例所提供的代码同步装置做具体介绍:
图4是根据本发明实施例的代码同步装置的示意图,如图4所示,该代码同步装置主要包括第一获取单元10、第二获取单元20、第三获取单元30和同步单元40,其中:
第一获取单元10用于获取目标分支的同步参数,其中,目标分支为对分支代码进行编辑的分支,目标分支具有预先配置的同步参数,在分支开发模式下,一个主干可以具有多个分支,当需要将主干代码同步至某个目标分支上时,可以先从预先配置的同步参数中获取到这个目标分支的同步参数,同步参数主要用于指导后续进行的主干代码与分支代码的同步。
第二获取单元20用于从同步参数中获取冲突处理方式,并根据目标分支的分支属性和同步参数获取主干同步范围,即,从同步参数中获取冲突解决策略,并获取同步过程中所需的主干同步的起始修订号和终止修订号。
第三获取单元30用于获取目标分支上的分支代码,具体地,可以从服务器上签出(checkout)目标分支的分支代码到本地目录下,作为工作副本,后续用来同步。
同步单元40用于将主干同步范围内的主干代码同步至分支代码,并按照冲突处理方式处理同步过程中的冲突。即,将起始修订号至终止修订号范围内的主干代码同步至分支代码,并按照冲突处理方式处理同步过程中的冲突,其中,所执行的同步操作可以在分支代码的工作副本目录下进行,可以使用SVN命令行执行同步操作,具体命令可以为:#svnmerge$trunkPath-r$startRev:$endRev。
本发明实施例所提供的代码同步装置,通过预先配置分支的同步参数,并按照同步参数将主干代码同步至分支代码,达到了主干同步分支可以由版本控制系统自动执行目的,进而解决了现有技术中主干代码和分支代码同步需要人工操作带来的效率低的技术问题,从而达到了降低人工操作成本、提高版本发布效率的技术效果。
其中,第二获取单元主要包括第一查询子单元、第二查询子单元和确定子单元,第一查询子单元用于从分支属性中查询主干同步范围的起始修订号,第二查询子单元用于按照同步参数查询主干同步范围的终止修订号,确定子单元用于确定起始修订号至终止修订号为主干同步范围。
具体地,第一查询子单元主要包括第一获取模块和第一确定模块,其中,第一获取模块用于获取创建目标分支时主干代码的修订号,或获取上一次将主干代码同步至分支代码时主干代码的最大修订号其中,可以通过SVN命令查询目标分支的分支属性,从中获取到该目标分支上一次从主干同步的主干代码的最大修订号,如果该目标分支是第一次与主干进行同步,该从分支属性中获取该目标分支从主干拉取下来时的修订号(即,创建目标分支时主干代码的修订号)。第一确定模块用于确定第一获取模块获取到的修订号为起始修订号。
第二查询子单元主要包括判断模块、第二获取模块和第二确定模块,其中,判断模块用于判断同步参数中的目标属性是否为第一预设属性,目标属性为终止修订号的属性,第一预设属性表示将主干代码的稳定修订号作为终止修订号;第二获取模块用于在判断模块判断出目标属性不为第一预设属性的情况下,获取主干代码的当前最大修订号,或在判断模块判断目标属性为第一预设属性的情况下,获取主干代码的最大稳定修订号,即,判断同步参数中是否将主干代码的稳定修订号作为终止修订号,如果确定将主干代码的稳定修订号作为终止修订号,则查询版本控制系统中当前主干所录入的最新稳定的修订号(即,最大稳定修订号),否则,查询主干上的最新修订号(即,当前最大修订号)。第二确定模块用于确定第二获取模块获取到的修订号为终止修订号。
进一步地,本发明实施例的代码同步装置还包括第一判断单元,在将主干同步范围内的主干代码同步至分支代码过程中,第一判断单元用于判断主干代码和分支代码在同步过程中是否出现冲突,具体地,可以根据SVN的提示结果判断是否有冲突,其中,在将主干同步范围内的主干代码同步至分支代码过程中,SVN会提示出是否有冲突,如果SVN提示出现冲突的话,则判断出主干代码和分支代码在同步过程中出现冲突,如果SVN提示未出现冲突的话,则相应地判断出主干代码和分支代码在同步过程中未出现冲突,也可以采用其它能够进行冲突判断的方式,此处不再赘述,其中,在判断出主干代码和分支代码在同步过程中出现冲突的情况下,同步单元按照冲突处理方式处理同步过程中的冲突。
具体地,在本发明实施例中共,冲突处理方式包括第一处理方式和与第一处理方式不同的第二处理方式,其中,同步单元40包括判断子单元和同步子单元,判断子单元用于判断同步过程中的冲突是文件冲突还是树冲突,文件冲突是指当两名(或更多)开发人员修改了同一个文件中相邻或相同的行时就出发生文件冲突,树冲突是指当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对他们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突。如果判断出同步过程中的冲突是文件冲突,则同步子单元按照第一处理方式处理同步过程中的冲突,该第一处理方式是预先设置的解决文件冲突的冲突解决策略,如果判断出同步过程中的冲突是树冲突,则同步子单元按照第二处理方式处理同步过程中的冲突,该第二处理方式是预先设置的解决树冲突的冲突解决策略,在本发明实施例中,第二处理方式可以是跳过对树冲突的处理,直接将树冲突标记为“已解决”。
进一步地,本发明实施例的代码同步装置还包括第二判断单元和签入单元,在同步单元40按照冲突处理方式处理同步过程中的冲突之后,或在第一判断单元判断出主干代码和分支代码在同步过程中未出现冲突的情况下,第二判断单元用于判断是否签入与主干代码同步后的分支代码,即,判断是否提交与主干代码同步后的分支代码,具体地,可以获取同步参数中的提交标识,然后判断获取到的提交标识是第一预设标识还是第二预设标识,比如:可以以第一预设标识“1”表示需要提交,以第二预设标识“0”表示不需要提交,在判断出签入与主干代码同步后的分支代码的情况下,签入单元用于签入与主干代码同步后的分支代码。
更进一步地,代码同步装置还包括用于获取主干代码同步至分支代码的同步结果的第四获取单元,该同步结果主要包括是否已提交代码,合并的文件个数,合并过程中出现的冲突文件个数以及文件冲突详细信息等,该同步结果可以以邮件形式或其它形式反馈给用户,用户在收到结果邮件后,可以核实邮件中的冲突情况,分析冲突,总结是否可以通过配置冲突解决策略来减少后续的人工处理情况,从而达到通过不断优化策略,提升同步效率的目的。
从以上的描述中,可以看出,本发明实现了将手工操作的同步过程转换为系统自动操作,利用工具自动定期执行主干同步分支的过程,并通过自定义配置一些默认的冲突解决策略,来减少遇到冲突时开发介入的场景,降低人工操作成本,提高版本发布效率。
实施例3
根据本发明实施例,还提供了一种用于实施上述代码同步方法的终端设备,该终端设备包括执行如下操作的处理器:
获取目标分支的同步参数,其中,目标分支为对分支代码进行编辑的分支,目标分支具有预先配置的同步参数;从同步参数中获取冲突处理方式,并根据目标分支的分支属性和同步参数获取主干同步范围;获取目标分支上的分支代码;以及将主干同步范围内的主干代码同步至分支代码,并按照冲突处理方式处理同步过程中的冲突。
从分支属性中查询主干同步范围的起始修订号;按照同步参数查询主干同步范围的终止修订号;以及确定起始修订号至终止修订号为主干同步范围。
获取创建目标分支时主干代码的修订号,或获取上一次将主干代码同步至分支代码时主干代码的最大修订号;以及确定获取到的修订号为起始修订号。
判断同步参数中的目标属性是否为第一预设属性,其中,目标属性为终止修订号的属性,第一预设属性表示将主干代码的稳定修订号作为终止修订号;在判断出目标属性不为第一预设属性的情况下,获取主干代码的当前最大修订号,或在判断目标属性为第一预设属性的情况下,获取主干代码的最大稳定修订号;以及确定获取到的修订号为终止修订号。
判断主干代码和分支代码在同步过程中是否出现冲突,其中,在判断出主干代码和分支代码在同步过程中出现冲突的情况下,按照冲突处理方式处理同步过程中的冲突。
判断同步过程中的冲突是文件冲突还是树冲突;以及在判断出同步过程中的冲突是文件冲突的情况下,按照第一处理方式处理同步过程中的冲突,或在判断出同步过程中的冲突是树冲突的情况下,按照第二处理方式处理同步过程中的冲突。
判断是否签入与主干代码同步后的分支代码;以及在判断出签入与主干代码同步后的分支代码的情况下,签入与主干代码同步后的分支代码。
获取主干代码同步至分支代码的同步结果。
实施例4
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于存储本发明实施例所提供的代码同步方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于分支开发模式下的版本控制系统网络中的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,获取目标分支的同步参数,其中,目标分支为对分支代码进行编辑的分支,目标分支具有预先配置的同步参数;
S2,从同步参数中获取冲突处理方式,并根据目标分支的分支属性和同步参数获取主干同步范围;
S3,获取目标分支上的分支代码;
S4,将主干同步范围内的主干代码同步至分支代码,并按照冲突处理方式处理同步过程中的冲突。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码从分支属性中查询主干同步范围的起始修订号;按照同步参数查询主干同步范围的终止修订号;以及确定起始修订号至终止修订号为主干同步范围。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码获取创建目标分支时主干代码的修订号,或获取上一次将主干代码同步至分支代码时主干代码的最大修订号;以及确定获取到的修订号为起始修订号。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码判断同步参数中的目标属性是否为第一预设属性,其中,目标属性为终止修订号的属性,第一预设属性表示将主干代码的稳定修订号作为终止修订号;在判断出目标属性不为第一预设属性的情况下,获取主干代码的当前最大修订号,或在判断目标属性为第一预设属性的情况下,获取主干代码的最大稳定修订号;以及确定获取到的修订号为终止修订号。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码判断主干代码和分支代码在同步过程中是否出现冲突,其中,在判断出主干代码和分支代码在同步过程中出现冲突的情况下,按照冲突处理方式处理同步过程中的冲突。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码判断同步过程中的冲突是文件冲突还是树冲突;以及在判断出同步过程中的冲突是文件冲突的情况下,按照第一处理方式处理同步过程中的冲突,或在判断出同步过程中的冲突是树冲突的情况下,按照第二处理方式处理同步过程中的冲突。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码判断是否签入与主干代码同步后的分支代码;以及在判断出签入与主干代码同步后的分支代码的情况下,签入与主干代码同步后的分支代码。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码获取主干代码同步至分支代码的同步结果。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (16)
1.一种代码同步方法,其特征在于,包括:
获取目标分支的同步参数,其中,所述目标分支为对分支代码进行编辑的分支,所述目标分支具有预先配置的所述同步参数;
从所述同步参数中获取冲突处理方式,并根据所述目标分支的分支属性和所述同步参数获取主干同步范围;
获取所述目标分支上的所述分支代码;以及
将所述主干同步范围内的主干代码同步至所述分支代码,并按照所述冲突处理方式处理同步过程中的冲突。
2.根据权利要求1所述的代码同步方法,其特征在于,根据所述目标分支的分支属性和所述同步参数中获取主干同步范围包括:
从所述分支属性中查询所述主干同步范围的起始修订号;
按照所述同步参数查询所述主干同步范围的终止修订号;以及
确定所述起始修订号至所述终止修订号为所述主干同步范围。
3.根据权利要求2所述的代码同步方法,其特征在于,从所述分支属性中查询所述主干同步范围的起始修订号包括:
获取创建所述目标分支时所述主干代码的修订号,或获取上一次将所述主干代码同步至所述分支代码时所述主干代码的最大修订号;以及
确定获取到的修订号为所述起始修订号。
4.根据权利要求2所述的代码同步方法,其特征在于,按照所述同步参数查询所述主干同步范围的终止修订号包括:
判断所述同步参数中的目标属性是否为第一预设属性,其中,所述目标属性为所述终止修订号的属性,所述第一预设属性表示将所述主干代码的稳定修订号作为所述终止修订号;
在判断出所述目标属性不为所述第一预设属性的情况下,获取所述主干代码的当前最大修订号,或在判断所述目标属性为所述第一预设属性的情况下,获取所述主干代码的最大稳定修订号;以及
确定获取到的修订号为所述终止修订号。
5.根据权利要求1所述的代码同步方法,其特征在于,在将所述主干同步范围内的所述主干代码同步至所述分支代码过程中,所述代码同步方法还包括:
判断所述主干代码和所述分支代码在同步过程中是否出现冲突,
其中,在判断出所述主干代码和所述分支代码在同步过程中出现冲突的情况下,按照所述冲突处理方式处理同步过程中的冲突。
6.根据权利要求1或5所述的代码同步方法,其特征在于,所述冲突处理方式包括第一处理方式和与所述第一处理方式不同的第二处理方式,其中,按照所述冲突处理方式处理同步过程中的冲突包括:
判断同步过程中的冲突是文件冲突还是树冲突;以及
在判断出同步过程中的冲突是文件冲突的情况下,按照所述第一处理方式处理同步过程中的冲突,或在判断出同步过程中的冲突是树冲突的情况下,按照所述第二处理方式处理同步过程中的冲突。
7.根据权利要求5所述的代码同步方法,其特征在于,在按照所述冲突处理方式处理同步过程中的冲突之后,或在判断出所述主干代码和所述分支代码在同步过程中未出现冲突的情况下,所述代码同步方法还包括:
判断是否签入与所述主干代码同步后的所述分支代码;以及
在判断出签入与所述主干代码同步后的所述分支代码的情况下,签入与所述主干代码同步后的所述分支代码。
8.根据权利要求7所述的代码同步方法,其特征在于,在签入与所述主干代码同步后的所述分支代码之后,或在判断出不签入与所述主干代码同步后的所述分支代码的情况下,所述代码同步方法还包括:获取所述主干代码同步至所述分支代码的同步结果。
9.一种代码同步装置,其特征在于,包括:
第一获取单元,用于获取目标分支的同步参数,其中,所述目标分支为对分支代码进行编辑的分支,所述目标分支具有预先配置的所述同步参数;
第二获取单元,用于从所述同步参数中获取冲突处理方式,并根据所述目标分支的分支属性和所述同步参数获取主干同步范围;
第三获取单元,用于获取所述目标分支上的所述分支代码;以及
同步单元,用于将所述主干同步范围内的主干代码同步至所述分支代码,并按照所述冲突处理方式处理同步过程中的冲突。
10.根据权利要求9所述的代码同步装置,其特征在于,所述第二获取单元包括:
第一查询子单元,用于从所述分支属性中查询所述主干同步范围的起始修订号;
第二查询子单元,用于按照所述同步参数查询所述主干同步范围的终止修订号;以及
确定子单元,用于确定所述起始修订号至所述终止修订号为所述主干同步范围。
11.根据权利要求10所述的代码同步装置,其特征在于,所述第一查询子单元包括:
第一获取模块,用于获取创建所述目标分支时所述主干代码的修订号,或获取上一次将所述主干代码同步至所述分支代码时所述主干代码的最大修订号;以及
第一确定模块,用于确定获取到的修订号为所述起始修订号。
12.根据权利要求10所述的代码同步装置,其特征在于,所述第二查询子单元包括:
判断模块,用于判断所述同步参数中的目标属性是否为第一预设属性,其中,所述目标属性为所述终止修订号的属性,所述第一预设属性表示将所述主干代码的稳定修订号作为所述终止修订号;
第二获取模块,用于在判断出所述目标属性不为所述第一预设属性的情况下,获取所述主干代码的当前最大修订号,或在判断所述目标属性为所述第一预设属性的情况下,获取所述主干代码的最大稳定修订号;以及
第二确定模块,用于确定获取到的修订号为所述终止修订号。
13.根据权利要求9所述的代码同步装置,其特征在于,所述代码同步装置还包括:
第一判断单元,用于判断所述主干代码和所述分支代码在同步过程中是否出现冲突,
其中,在判断出所述主干代码和所述分支代码在同步过程中出现冲突的情况下,所述同步单元按照所述冲突处理方式处理同步过程中的冲突。
14.根据权利要求9或13所述的代码同步装置,其特征在于,所述冲突处理方式包括第一处理方式和与所述第一处理方式不同的第二处理方式,其中,所述同步单元包括:
判断子单元,用于判断同步过程中的冲突是文件冲突还是树冲突;以及
同步子单元,用于在判断出同步过程中的冲突是文件冲突的情况下,按照所述第一处理方式处理同步过程中的冲突,或在判断出同步过程中的冲突是树冲突的情况下,按照所述第二处理方式处理同步过程中的冲突。
15.根据权利要求13所述的代码同步装置,其特征在于,所述代码同步装置还包括:
第二判断单元,用于判断是否签入与所述主干代码同步后的所述分支代码;以及
签入单元,用于在判断出签入与所述主干代码同步后的所述分支代码的情况下,签入与所述主干代码同步后的所述分支代码。
16.根据权利要求15所述的代码同步装置,其特征在于,所述代码同步装置还包括:
第四获取单元,用于获取所述主干代码同步至所述分支代码的同步结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410362545.7A CN105302533B (zh) | 2014-07-25 | 2014-07-25 | 代码同步方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410362545.7A CN105302533B (zh) | 2014-07-25 | 2014-07-25 | 代码同步方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302533A true CN105302533A (zh) | 2016-02-03 |
CN105302533B CN105302533B (zh) | 2020-04-07 |
Family
ID=55199836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410362545.7A Active CN105302533B (zh) | 2014-07-25 | 2014-07-25 | 代码同步方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105302533B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126410A (zh) * | 2016-05-26 | 2016-11-16 | 华为技术有限公司 | 代码冲突的提示方法及装置 |
CN106406918A (zh) * | 2016-11-25 | 2017-02-15 | 华胜信泰信息产业发展有限公司 | 源代码自动合并方法和源代码自动合并装置 |
CN107797813A (zh) * | 2017-10-13 | 2018-03-13 | 福建天泉教育科技有限公司 | 一种软件敏捷开发方法及系统 |
CN109144562A (zh) * | 2018-04-19 | 2019-01-04 | 南京新贝金服科技有限公司 | 一种基于zookeeper的智能代码发布告警方法 |
CN109213516A (zh) * | 2017-07-01 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | Svn中代码同步与通知的方法、存储介质、设备和系统 |
WO2019080091A1 (zh) * | 2017-10-27 | 2019-05-02 | 华为技术有限公司 | 代码处理方法和设备 |
CN109725926A (zh) * | 2017-10-31 | 2019-05-07 | 阿里巴巴集团控股有限公司 | 管理基线的方法和装置以及数据处理方法 |
CN109766125A (zh) * | 2019-01-04 | 2019-05-17 | 中国银行股份有限公司 | 批次间追平冲突的识别方法及装置 |
CN110187914A (zh) * | 2019-05-23 | 2019-08-30 | 杭州火小二科技有限公司 | 应用开发方法、系统及装置 |
CN110795100A (zh) * | 2019-09-12 | 2020-02-14 | 连连银通电子支付有限公司 | 分支合并方法及装置 |
CN111638920A (zh) * | 2020-05-29 | 2020-09-08 | 中国工商银行股份有限公司 | 计算机程序同步任务处理方法、装置、电子设备和介质 |
CN111930411A (zh) * | 2020-09-30 | 2020-11-13 | 腾讯科技(深圳)有限公司 | 代码升级方法、装置、计算机设备和存储介质 |
CN111984307A (zh) * | 2020-08-24 | 2020-11-24 | 北京思特奇信息技术股份有限公司 | 一个自动修复基线版本的处理方法及装置 |
CN112134948A (zh) * | 2020-09-21 | 2020-12-25 | 苏州科达科技股份有限公司 | 组件发布同步方法、系统、设备及存储介质 |
TWI735511B (zh) * | 2017-01-19 | 2021-08-11 | 香港商斑馬智行網絡(香港)有限公司 | 代碼提交方法和設備 |
CN113254426A (zh) * | 2021-07-13 | 2021-08-13 | 杰为软件系统(深圳)有限公司 | 一种基于分支和基线的cad数据分布式版本控制系统 |
CN113626072A (zh) * | 2021-10-12 | 2021-11-09 | 中国光大银行股份有限公司 | 基于服务端的分支合并冲突的处理方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110191746A1 (en) * | 2010-02-01 | 2011-08-04 | Raymond Packbier | Tracking device and method for very large-scale software development projects |
CN102279749A (zh) * | 2011-08-30 | 2011-12-14 | 大唐移动通信设备有限公司 | 一种代码归并方法和设备 |
CN102929630A (zh) * | 2012-10-31 | 2013-02-13 | 中标软件有限公司 | 一种基于分布式协同开发环境下的代码管理方法及系统 |
-
2014
- 2014-07-25 CN CN201410362545.7A patent/CN105302533B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110191746A1 (en) * | 2010-02-01 | 2011-08-04 | Raymond Packbier | Tracking device and method for very large-scale software development projects |
CN102279749A (zh) * | 2011-08-30 | 2011-12-14 | 大唐移动通信设备有限公司 | 一种代码归并方法和设备 |
CN102929630A (zh) * | 2012-10-31 | 2013-02-13 | 中标软件有限公司 | 一种基于分布式协同开发环境下的代码管理方法及系统 |
Non-Patent Citations (1)
Title |
---|
钟文锋 等: ""基于SVN的校级统一信息系统版本管理系统的设计与实现"", 《中国教育信息化》 * |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126410B (zh) * | 2016-05-26 | 2019-05-07 | 华为技术有限公司 | 代码冲突的提示方法及装置 |
CN106126410A (zh) * | 2016-05-26 | 2016-11-16 | 华为技术有限公司 | 代码冲突的提示方法及装置 |
CN106406918A (zh) * | 2016-11-25 | 2017-02-15 | 华胜信泰信息产业发展有限公司 | 源代码自动合并方法和源代码自动合并装置 |
CN106406918B (zh) * | 2016-11-25 | 2020-02-28 | 华胜信泰信息产业发展有限公司 | 源代码自动合并方法和源代码自动合并装置 |
TWI735511B (zh) * | 2017-01-19 | 2021-08-11 | 香港商斑馬智行網絡(香港)有限公司 | 代碼提交方法和設備 |
CN109213516A (zh) * | 2017-07-01 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | Svn中代码同步与通知的方法、存储介质、设备和系统 |
CN107797813A (zh) * | 2017-10-13 | 2018-03-13 | 福建天泉教育科技有限公司 | 一种软件敏捷开发方法及系统 |
WO2019080091A1 (zh) * | 2017-10-27 | 2019-05-02 | 华为技术有限公司 | 代码处理方法和设备 |
CN109725926A (zh) * | 2017-10-31 | 2019-05-07 | 阿里巴巴集团控股有限公司 | 管理基线的方法和装置以及数据处理方法 |
CN109725926B (zh) * | 2017-10-31 | 2022-05-31 | 阿里巴巴集团控股有限公司 | 管理基线的方法和装置以及数据处理方法 |
CN109144562B (zh) * | 2018-04-19 | 2019-06-21 | 南京新贝金服科技有限公司 | 一种基于zookeeper的智能代码发布告警方法 |
CN109144562A (zh) * | 2018-04-19 | 2019-01-04 | 南京新贝金服科技有限公司 | 一种基于zookeeper的智能代码发布告警方法 |
CN109766125A (zh) * | 2019-01-04 | 2019-05-17 | 中国银行股份有限公司 | 批次间追平冲突的识别方法及装置 |
CN109766125B (zh) * | 2019-01-04 | 2022-06-10 | 中国银行股份有限公司 | 批次间追平冲突的识别方法及装置 |
CN110187914A (zh) * | 2019-05-23 | 2019-08-30 | 杭州火小二科技有限公司 | 应用开发方法、系统及装置 |
CN110795100A (zh) * | 2019-09-12 | 2020-02-14 | 连连银通电子支付有限公司 | 分支合并方法及装置 |
CN110795100B (zh) * | 2019-09-12 | 2023-11-03 | 连连银通电子支付有限公司 | 分支合并方法及装置 |
CN111638920B (zh) * | 2020-05-29 | 2023-09-22 | 中国工商银行股份有限公司 | 计算机程序同步任务处理方法、装置、电子设备和介质 |
CN111638920A (zh) * | 2020-05-29 | 2020-09-08 | 中国工商银行股份有限公司 | 计算机程序同步任务处理方法、装置、电子设备和介质 |
CN111984307A (zh) * | 2020-08-24 | 2020-11-24 | 北京思特奇信息技术股份有限公司 | 一个自动修复基线版本的处理方法及装置 |
CN112134948A (zh) * | 2020-09-21 | 2020-12-25 | 苏州科达科技股份有限公司 | 组件发布同步方法、系统、设备及存储介质 |
CN111930411B (zh) * | 2020-09-30 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 代码升级方法、装置、计算机设备和存储介质 |
CN111930411A (zh) * | 2020-09-30 | 2020-11-13 | 腾讯科技(深圳)有限公司 | 代码升级方法、装置、计算机设备和存储介质 |
CN113254426B (zh) * | 2021-07-13 | 2021-10-29 | 杰为软件系统(深圳)有限公司 | 一种基于分支和基线的cad数据分布式版本控制系统 |
CN113254426A (zh) * | 2021-07-13 | 2021-08-13 | 杰为软件系统(深圳)有限公司 | 一种基于分支和基线的cad数据分布式版本控制系统 |
CN113626072A (zh) * | 2021-10-12 | 2021-11-09 | 中国光大银行股份有限公司 | 基于服务端的分支合并冲突的处理方法、装置及电子设备 |
CN113626072B (zh) * | 2021-10-12 | 2022-01-04 | 中国光大银行股份有限公司 | 基于服务端的分支合并冲突的处理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105302533B (zh) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105302533A (zh) | 代码同步方法和装置 | |
CN106033436B (zh) | 一种数据库的合并方法 | |
CN102279749B (zh) | 一种代码归并方法和设备 | |
US20120079502A1 (en) | Dependency-ordered resource synchronization | |
CN108399082B (zh) | 一种持续集成流水线的生成方法和系统 | |
CN106033388B (zh) | 测试用例库管理方法及系统 | |
CN111401029B (zh) | 一种基于文档分区和协同编辑的文档版本更新系统和方法 | |
CN102541941A (zh) | 一种多方协同操作文件的版本管理控制方法 | |
US11321274B2 (en) | Software discovery with variable scan frequency | |
CN104750739A (zh) | 一种用于实现用户组之间共享文档的方法及装置 | |
CN104461578A (zh) | 代码自动合并方法和系统 | |
CN104423960A (zh) | 一种项目持续集成的方法及系统 | |
CN107479881B (zh) | 差异代码的同步方法、存储介质、电子设备及系统 | |
CN101673374B (zh) | 一种单据处理方法和装置 | |
CN105630818A (zh) | 一种批量文件重命名的方法及装置 | |
US9336228B2 (en) | Synchronization of program code between revision management applications utilizing different version-control architectures | |
CN104376073A (zh) | 一种数据库恢复方法及装置 | |
US20220292056A1 (en) | Method and apparatus for modifying file name, and storage medium | |
CN111984239A (zh) | 一种页面配置方法、装置、服务器及存储介质 | |
CN103701653A (zh) | 一种接口热插拔配置数据的处理方法及网络配置服务器 | |
CN109960538A (zh) | 一种配置界面管理方法、配置界面管理装置及电子设备 | |
CN104915462A (zh) | 一种文件管理方法及系统 | |
CN112988280B (zh) | 一种配置数据处理方法及装置 | |
CN114564854B (zh) | 支持fmea双向关系树的数据节点的操作方法及设备 | |
CN105488165A (zh) | 基于索引库的数据检索方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |