一种代码编译方法、设备及系统与流程

文档序号:12824502阅读:264来源:国知局
一种代码编译方法、设备及系统与流程

本发明的实施例涉及数据通信领域,尤其涉及云编译环境下的一种代码编译方法、设备及系统。



背景技术:

在云编译环境中,软件开发过程中下载镜像文件到设备之前的所有工作,包括代码的下载,代码的编辑,代码的编译,生成镜像文件。且该环境中对代码的编辑和代码的编译在两个不同的机器上进行,这样的一个环境即所谓的云编译环境。在这样的云编译环境中,因为代码的编辑和代码的编译在不同的机器上进行,必然存在一个如何将两边机器上的代码同步的问题。

云编译中有一个非常重要的功能就是将处于编辑机器a上的代码和编译机器b上的代码同步。目前已知的解决方案是通过将修改的所有代码,完全拷贝到远程编译机器上,然后进行编译。

参照图1所示,现有技术提供一种代码同步方法简要流程如下:

步骤1、代码编译机器a下载代码;

步骤2、代码编译机器a编辑代码(包括修改或者增加删除代码);

步骤3、代码编译机器a将编辑后的代码文件拷贝到编译机器b上;

步骤4、编译机器b发起一次编译,生成最终结果镜像文件。

上述方案虽然实现了远程编译的功能时,若进行代码文件修改,拷贝的数量量将会非常多,效率低下。



技术实现要素:

本发明的实施例提供一种代码编译方法、设备及系统,能够提高代码编译效率。

第一方面,本发明的实施例提供一种代码编译方法,应用于云编译环境,其特征在于,包括:

代码编辑设备从代码服务器下载代码;

所述代码编辑设备对所述代码进行编辑;

所述代码编辑设备提取对所述代码编辑过程中已发生更改的代码,并根据将所述已发生更改的代码生成代码补丁;

所述代码编辑设备将所述代码补丁发送至代码编译设备;

所述代码编译设备根据所述代码补丁,对所述代码执行补丁操作后,完成本地编译。

结合第一方面,在第一种可能的实现方式中,所述代码编辑设备将所述代码补丁发送至代码编译设备前,还包括:

所述代码编辑设备向所述代码编译设备发送请编译请求,所述编译请求用于解析所述代码补丁,其中所述编译请求为根据预设请求协议生成。

结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述代码编译设备根据所述代码补丁,对所述代码执行补丁操作后,完成本地编译,具体包括:

所述代码编译设备接收来自所述代码编辑设备的所述编译请求,根据所述编译请求设置配置编译相关参数,并从代码服务器下载所述代码;

所述代码编译设备接收来自所述代码编辑设备的所述代码补丁,根据所述代码补丁,对从代码服务器下载的所述代码进行补丁操作后,完成本地编译。

结合第一方面的第二种可能的实现方式,所述编译请求包括的协议字段至少包括如下的一项或多项:用户名、产品名称、工程分支、操作类型、库文件路径、代码补丁路径、代码补丁更新方式和代码补丁列表。

结合第一方面或第一方面中的任意一种可能的实现方式,在第三种可能的实现方式中,所述代码补丁包括至少一个子补丁和对应每个子补丁的补丁状态信息,其中补丁状态信息用于指示对应的子补丁的可修改状态。

第二方面,提供一种代码编辑设备,应用于云编译环境,包括:

下载单元,用于从代码服务器下载代码;

编辑单元,用于对所述下载单元下载的所述代码进行编辑;

补丁生成单元,用于提取对所述代码中编辑过程中的已发生更改的代码,并将所述已发生更改的代码生成代码补丁;

发送单元,用于将所述补丁生成单元生成的代码补丁发送至代码编译设备。

结合第二方面,在第一种可能的实现方式中,

所述发送单元还用于向所述代码编译设备发送编译请求,所述编译请求用于解析所述代码补丁,其中所述编译请求为根据预设请求协议生成。

第三方面,提供一种代码编译设备,应用于云编译环境,

接收单元,用于接收代码编辑设备发送的代码补丁,其中所述代码补丁为代码编辑设备在代码中编辑过程中提取的已发生更改的代码生成;

编译单元,用于根据所述代码补丁,对所述代码执行补丁操作后,完成本地编译。

结合第三方面,在第一种可能的实现方式中,

所述接收单元,还用于接收所述代码编辑设备发送的编译请求,并从代码服务器下载所述代码,所述编译请求用于解析所述代码补丁,其中所述编译请求为根据预设请求协议生成;

和/或,

所述编译单元具体用于根据所述请求协议设置配置编译相关参数;在根据所述代码补丁,对从代码服务器下载的所述代码进行补丁操作后,完成本地编译。

第四方面,提供一种代码编译系统,包括代码服务器、如第二方面所述的任意一种代码编辑设备,以及如第三方面所述的任意一种代码编译设备;

所述代码服务器用于保存已编译通过的代码。

本发明的实施例提供的代码编译方法、设备及系统,应用于云编译环境,其中代码编辑设备具体能够从代码服务器下载代码;并对所述代码进行编辑;之后提取对所述代码中编辑过程中已发生更改的代码,并将所述已发生更改的代码生成代码补丁;再将所述代码补丁发送至代码编译设备,使得代码编译设备根据所述代码补丁,对所述代码执行补丁操作后,完成本地编译;在上述方案中由于仅需将代码的编辑过程中已发生更改的代码通过代码补丁的形式发送至代码编译设备,而无需每次都将所有的代码发送至代码编译设备,可以能够提高代码编译效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的实施例提供的一种云编译环境的代码编译系统的组成设备结构示意图;

图2为本发明的实施例提供的一种代码编译方法的流程示意图;

图3为本发明的另一实施例提供的一种代码编译方法的流程示意图;

图4为本发明的实施例提供的编译请求包括的协议字段的结构示意图;

图5为本发明的实施例提供的子补丁的状态机变化示意图;

图6为本发明的实施例提供的代码编辑设备的结构示意图;

图7为本发明的实施例提供的代码编译设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参照图1所示,本发明的实施例应用于如图1所示云编译环境的代码编译系统,本发明的实施例所述的云编译环境为在软件开发中代码编辑和代码编译分属不同设备的开发环境;本发明的实施例提供代码编译系统包括代码服务器server、代码编辑设备zd1和代码编译设备zd2,其中代码服务器server用于存储软件开发过程中使用的代码即保存已编译通过的代码,代码编辑设备zd1主要用于代码的下载和代码的编辑,代码编译设备zd2主要用于代码的编译和镜像文件生成,这里的镜像文件为软件经由代码编译后生成用于最终下载到设备上运行的文件。

参照图2所示,本发明的实施例提供一种代码编译方法,应用于上述的云编译环境,包括:

101、代码编辑设备从代码服务器下载代码;

102、所述代码编辑设备对所述代码进行编辑;

103、所述代码编辑设备提取对所述代码编辑过程中已发生更改的代码,并根据所述已发生更改的代码生成代码补丁;

104、所述代码编辑设备将所述代码补丁发送至代码编译设备。

具体步骤104可以为码编辑设备经由代码服务器将代码补丁发送至代码编译设备,即代码编辑设备将代码补丁上传至代码服务器,并由代码编译设备根据代码补丁的路径按需下载。

105、所述代码编译设备根据所述代码补丁,对所述代码执行补丁操作后,完成本地编译。

本发明的实施例提供的代码编译方法,应用于云编译环境,其中代码编辑设备具体能够从代码服务器下载代码;并对所述代码进行编辑;之后提取对所述代码中编辑过程中已发生更改的代码,并将所述已发生更改的代码生成代码补丁;再将所述代码补丁发送至代码编译设备,使得代码编译设备根据所述代码补丁,对所述代码执行补丁操作后,完成本地编译;在上述方案中由于仅需将代码的编辑过程中已发生更改的代码通过代码补丁的形式发送 至代码编译设备,而无需每次都将所有的代码发送至代码编译设备,可以能够提高代码编译效率。

参照图3所示,本发明的另一实施例提供的一种代码编译方法,应用于上述的云编译环境,包括:

201、代码编辑设备从代码服务器下载代码;

202、所述代码编辑设备对所述代码进行编辑;

203、所述代码编辑设备提取对所述代码编辑过程中已发生更改的代码,并根据所述已发生更改的代码生成代码补丁;

其中,代码补丁包括至少一个子补丁和对应每个子补丁的补丁状态信息,其中补丁状态信息用于指示对应的子补丁的可修改状态。

由于代码补丁包括至少一个子补丁和对应每个子补丁的补丁状态信息,其中补丁状态信息用于指示对应的子补丁的可修改状态。因此,在生成代码补丁c后,代码补丁c是由多个子补丁d构成的。多个子补丁d中包括:一种是需要多次修改的子补丁,另一种是只修改一次的子补丁。在对代码进行编辑时,例如,对代码进行修改,通过指定修改的代码的文件路径将修改的代码和代码的原始状态对比,生成子补丁文件d,然后将子补丁d追加到代码补丁c中。并将子补丁d的可修改状态写入补丁状态信息中。补丁状态信息可以被设计为一个原始状态为空的文件,补丁状态信息修改后也生成一个代码补丁覆盖到代码补丁c中。因此即使修改众多的文件,只需要指定文件路径后,所有的已发生更改的代码都集中到代码补丁c中。接收设备在接收到代码补丁c以后,统一处理。

补丁状态信息因为存储了对应的子补丁的生成状态,传送到接收设备以后就会根据这个状态进行判断,如果是只需要修改一次的子补丁,将会在以后多次编译中,都不去更新这个子补丁文件,从而减少一些不必要编译。而且补丁状态信息也存储了对代码编译设备中当前修改了哪些代码,有哪些代码使用的第一次修改的,哪些代码在每次编译中需要更新,从而也知道了多 次编译之后对,代码编译设备上的代码的文件状态,并根据这个补丁状态信息可以将修改的代码恢复到原始的状态。

这样以补丁的方式解决了修改众多文件,带来的拷贝文件的效率低下问题。同时,在代码审查时可以仅对代码补丁文件进行审查,避免了审查修改时需要提供全部代码造成的代码泄露。

204、所述代码编辑设备向所述代码编译设备发送编译请求。

所述编译请求用于解析所述代码补丁,其中所述编译请求为根据预设请求协议生成。其中,为实现代码编辑设备和代码编译设备编译之间代码的同步,本发明定义了一个用于代码补丁交互的请求协议,该协议通过定义代码编辑设备和代码编译设备之间代码同步的方式,进行工作。如图4所示,编译请求包括的协议字段至少包括如下的一项或多项:用户名、产品名称、工程分支、操作类型、库文件路径、代码补丁路径、代码补丁更新方式和代码补丁列表。

所述编译请求中,各个协议字段含义如下:

用户名,用于指定在代码编译设备上使用的登录账户;

产品名,用于指定在代码编译设备上进行编译的产品;

工程分支,用于指定在代码编译设备上使用的工程分支;

操作类型,用于指定在代码编译设备上进行的操作;

库文件路径,用于指定在代码编译设备上编译所使用的路径。其中库文件的作用是将代码编辑设备和代码编译设备所使用的原始代码保证一致。具体的,在库中存储了代码编辑设备和代码编译设备两者所使用的代码的版本。

代码补丁路径,用于指定代码补丁上传的路径,供代码编译设备从指定路径下载补丁。代码补丁更新方式,用于指定代码补丁使用的更新方式。根据用户不同的需求,更新方式包括:本次不更新,下次不更新,本次更新三种情况。

代码补丁列表,用于指定本次编译包含的所有代码补丁的列表。

205、所述代码编辑设备将所述代码补丁发送至代码编译设备。

206、代码编译设备接收代码编辑设备发送的代码补丁,其中所述代码补丁为代码编辑设备在代码编辑过程中提取的已发生更改的代码生成;

207、所述代码编译设备接收所述代码编辑设备发送的编译请求;并从代码服务器下载所述代码,所述编译请求用于解析所述代码补丁,其中所述编译请求为根据预设请求协议生成;

208、所述代码编译设备根据所述编译请求设置配置编译相关参数;

209、根据所述代码补丁,对从代码服务器下载的所述代码进行补丁操作后,完成本地编译。

具体的,步骤209为所述代码编译设备在所述代码补丁中获取已发生更改的代码,并根据所述已发生更改的代码对在代码服务器下载的代码进行编译,生成镜像文件。

在步骤207中代码编译设备收到编译请求后,根据预设的请求协议,解析编译请求,并在步骤208中配置编译相关的参数,做好相应的预处理准备,在步骤209中根据代码补丁的属性,将代码补丁中的已发生更改的代码进行增加、删除、合并、清除、回退等处理。

在流程的步骤205中,具体可以为代码编辑设备经由代码服务器将代码补丁发送至代码编译设备,具体的代码编译设备可以根据用户名,产品名,工程分支定位到代码编译设备上面代码所在的路径。根据操作类型和库文件路径准备代码编译设备的编译环境。并根据代码补丁路径字段,使用常用网络传输方法(如tftp)从指定路径下载代码补丁。获取代码补丁后,根据代码补丁更新方式,判断本次对所有补丁处理状态后,依据代码补丁列表存储的补丁列表文件的名字进行处理。

在上述方法中,代码编译设备获取到代码补丁c以后,将代码补丁c分拆为多个子补丁d,然后对每个子补丁d进行处理。

子补丁d的状态按照图5的状态机进行变化:

初始状态是新增状态,判断该子补丁(patch)d是否在上一次不清除列表中,如果在不清除列表中,则进入不清除状态。否则,进入待打入状态,如果本次子补丁(patch)d在补丁状态信息中被设置为不清除(即为不清除文件),则子补丁(patch)d被设置为不清除状态,否则进入打入状态。打入结束后,如果在不清除列表中,则进入不清除状态。否则,进入待清除状态。最后待清除状态编译为清除状态。

本发明的实施例提供的代码编译方法,应用于云编译环境,其中代码编辑设备具体能够从代码服务器下载代码;并对所述代码进行编辑;之后提取对所述代码编辑过程中已发生更改的代码,并根据所述已发生更改的代码生成代码补丁;再将所述代码补丁发送至代码编译设备,使得代码编译设备根据所述代码补丁,对所述代码执行补丁操作后,完成本地编译;在上述方案中由于仅需将代码的编辑过程中已发生更改的代码通过代码补丁的形式发送至代码编译设备,而无需每次都将所有的代码发送至代码编译设备,可以能够提高代码编译效率。

参照图6所示,本发明的实施例提供一种代码编辑设备,应用于云编译环境,用于实施上述的代码同步方法,包括:

下载单元61,用于从代码服务器下载代码;

编辑单元62,用于对所述下载单元下载的所述代码进行编辑;

补丁生成单元63,用于提取对所述代码中编辑过程中已发生更改的代码,并根据所述已发生更改的代码生成代码补丁;

发送单元64,用于将所述补丁生成单元生成的代码补丁发送至代码编译设备。

其中,可选的所述发送单元64还用于向所述代码编译设备发送编译请求,所述编译请求用于解析所述代码补丁,其中所述编译请求为根据预设请求协议生成。

本发明的实施例提供的代码编辑设备,应用于云编译环境,其中代码编辑设备具体能够从代码服务器下载代码;并对所述代码进行编辑;之后提取对所述代码编辑过程中已发生更改的代码,并根据所述已发生更改的代码生成代码补丁;再将所述代码补丁发送至代码编译设备,使得代码编译设备根据所述代码补丁,对所述代码执行补丁操作后,完成本地编译;在上述方案中由于仅需将代码编辑过程中已发生更改的代码通过代码补丁的形式发送至代码编译设备,而无需每次都将所有的代码发送至代码编译设备,可以能够提高代码编译效率。

参照图7所示,本发明的实施例提供一种代码编译设备,应用于云编译环境,用于实施上述的代码同步方法,包括:

接收单元71,用于接收代码编辑设备发送的代码补丁,其中所述代码补丁为代码编辑设备在代码中提取的编辑过程中提取的已发生更改的代码生成;

编译单元72,用于根据所述代码补丁,对所述代码执行补丁操作后,完成本地编译。

可选的,所述接收单元71,还用于接收所述代码编辑设备发送的编译请求,并从代码服务器下载所述代码,所述编译请求用于解析所述代码补丁,其中所述编译请求为根据预设请求协议生成;

和/或,

所述编译单元具体用于根据所述编译请求设置配置编译相关参数;根据所述代码补丁,对从代码服务器下载的所述代码进行补丁操作后,完成本地编译。

本发明的实施例提供的代码编译设备,应用于云编译环境,其中由于代码编辑设备具体能够从代码服务器下载代码;并对所述代码进行编辑;之后提取对所述代码编辑过程中已发生更改的代码,并将所述已发生更改的代码生成代码补丁;再将所述代码补丁发送至代码编译设备,因此代码编译设备 根据所述代码补丁,对所述代码执行补丁操作后,完成本地编译;在上述方案中由于仅需将代码编辑过程中已发生更改的代码通过代码补丁的形式发送至代码编译设备,而无需每次都将所有的代码发送至代码编译设备,可以能够提高代码编译效率。

应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1