代码同步方法、服务器及存储介质

文档序号:1921174 发布日期:2021-12-03 浏览:9次 >En<

阅读说明:本技术 代码同步方法、服务器及存储介质 (Code synchronization method, server and storage medium ) 是由 张纯 于 2020-05-27 设计创作,主要内容包括:本说明书一个或多个实施例公开了一种代码同步方法、服务器及存储介质。该代码同步方法,所述方法包括以下步骤:在代码总目录下设置对应外部源的初始化目录,所述初始化目录下至少包括外部源代码同步清单;在所述代码总目录下执行代码同步操作,以基于所述外部源代码同步清单将所述外部源的代码数据同步至所述代码总目录下的仓库,可以加快外部源代码同步时间的同时还能大大节约存储空间。(One or more embodiments of the present specification disclose a code synchronization method, a server, and a storage medium. The code synchronization method comprises the following steps: setting an initialization directory corresponding to an external source under a total code directory, wherein the initialization directory at least comprises an external source code synchronous list; and executing code synchronization operation under the code general directory to synchronize the code data of the external source to a warehouse under the code general directory based on the external source code synchronization list, so that the external source code synchronization time can be shortened, and meanwhile, the storage space can be greatly saved.)

代码同步方法、服务器及存储介质

技术领域

本发明涉及软件开发技术领域,尤其涉及一种代码同步方法、服务器及存储介质。

背景技术

目前软件的研发过程大都是在已有的开源架构或者开发平台的基础上进行再次开发,比如计算机软件开发所依托的Windows操作系统,手机软件开发可以依托Linux操作系统、安卓操作系统等。

电脑或者手机等终端厂商需要根据开发平台最新发布的开源源码和芯片制造商基于最新源码发出的基线软件进行二次设计开发和调试。

然而,传统的代码同步方式只是将外部源的代码下载到本地服务器后再同步到内部库,如果出现代码体量特别大,或者下载网速特别慢的情况时,仅是外部源代码的同步时间需要至少1天以上,严重影响软件开发进度。因此,如何加快外部源代码的同步时间成为亟待解决的问题。

发明内容

本说明书一个或多个实施例的目的是提供一种代码同步方法、服务器及存储介质,可以加快外部源代码同步时间的同时,进一步地节约存储空间。

为解决上述技术问题,本说明书一个或多个实施例是这样实现的:

第一方面,提供了一种代码同步方法,所述方法包括以下步骤:将代码总目录下设置对应外部源的初始化目录,所述初始化目录下至少包括外部源代码同步清单;在所述代码总目录下执行代码同步操作,以基于所述外部源代码同步清单将所述外部源的代码数据同步至所述代码总目录下的仓库。

第二方面,提出了一种服务器,所述服务器包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间连接通信的数据总线,所述程序被所述处理器执行时实现如上文所述代码同步方法的步骤。

第三方面,提出了一种储存介质,用于计算机可读存储,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行时,实现如上文所述代码同步方法的步骤。

由以上本说明书一个或多个实施例提供的技术方案可见,本说明书实施例提供的代码同步方法,将初始化目录设置在代码总目录下,在本地服务器建立对应外部源的初始化目录,并且将外部源代码同步清单存放于该初始化目录下,以此确定初始化目录和外部源的对应关系。不同的外部源可以分别建立不同的初始化目录;然后最后在代码总目录下执行代码同步操作,可以将不同外部源的代码数据全部同步至同一代码总目录下的仓库群,这样不同外部源之间相同部分的代码数据可以自动去重,能够有效提升代码同步效率,降低代码同步的时间成本和人力成本,加快项目研发进程,提升研发效率,以及节约存储空间。特别地,在本地服务器建立对应外部源的外部源目录,在该外部源目录下生成上述初始化目录后,在代码总目录下建立该初始化目录的软链接,可以支持来自多个外部源的代码的同时同步,避免中间出现错误操作。因此采用本申请提供的代码同步方法可以同时涵盖各类芯片制造商的基线软件代码的同步,以及直接从软件开发平台的代码同步,各个外部源之间互不干扰,有效降低代码同步的时间成本和人力成本,尤其适合需要频繁同步各芯片制造商发布的基线软件代码进行软件开发的终端厂商,完成自己开发平台内部代码的更新操作。

附图说明

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

图1是本说明书实施例提供一种代码同步方法的步骤示意图。

图2是本说明书实施例提供另一种代码同步方法的步骤示意图。

图3是本说明书实施例提供又一种代码同步方法的步骤示意图。

图4是本说明书实施例提供又一种代码同步方法的步骤示意图。

图5是本说明书实施例提供又一种代码同步方法的步骤示意图。

图6是本说明书实施例提供又一种代码同步方法的步骤示意图。

图7是本说明书实施例提供又一种代码同步方法的步骤示意图。

图8是本说明书实施例提供又一种代码同步方法的步骤示意图。

图9是本说明书的一个实施例提供的服务器的结构示意图。

具体实施方式

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

本说明书提供的代码同步方法通过在本地建立与外部源对应的初始化目录,并且将该初始化目录设置于代码总目录下后执行代码同步操作,提高代码同步的效率。下面将详细地描述本说明书提供的代码同步方法及其各个步骤。

本说明书实施例提供的代码同步方法适用于需要获取开发平台或者芯片制造商发布的代码进行开发的终端厂商对自己内部平台的代码进行代码同步的更新操作。可以理解的是,该代码同步方法可以适用于任意开发平台下的代码同步,可以是Windows操作系统、Linux操作系统或者安卓操作系统等其他任意适用的操作系统的开发平台。

需要说明的是,本申请中提到的所有步骤和实施例可以是在本地进行的操作,特别是需要存储已同步的代码数据的服务器上进行的操作。

实施例一

参照图1所示为本说明书实施例提供的一种代码同步方法的步骤示意图。应理解的是,该代码同步方法不局限于对一个外部源的代码进行同步的情况,可以是对多个外部源的代码同时进行同步。需要说明的是,本申请中提到的外部源是外部开发平台或者芯片制造商提供的代码下载服务。本说明书实施例提供的代码同步方法包括以下步骤:

步骤10:在代码总目录下设置对应外部源的初始化目录,所述初始化目录下至少包括外部源代码同步清单;

可以通过将初始化目录拷贝或者直接创建的方式将初始化目录设置在代码总目录下,目的在于代码总目录下可以从初始化目录下获取代码同步的同步信息,包括初始化目录下对应外部源的至少外部源代码同步清单,便于后续代码总目录下的代码同步操作,以便后续在代码总目录下对外部源进行同步操作。可以在代码总目录下对不同外部源分别进行操作,由于各个芯片制造商在发布代码时使用标签方式发布基线代码,同时分支名也不重复。因此即使在同一个代码总目录下同步也不会相互干扰,便于各个外部源之间相同部分不会重复同步,加快同步效率。

这里所说的代码总目录是预设的进行代码同步的总目录,来自不同外部源的代码数据均保存至该代码总目录下的仓库中。初始化目录可以是一个文件夹,用于存放代码同步的同步信息,可以设置在代码总目录中的根目录下。

在一些实施方式中,可以使用开发平台的管理工具来管理多仓库代码,尤其适合需要频繁同步开发平台和芯片制造商等发布的代码数据进行软件开发的终端厂商对自己内部平台的代码进行代码同步更新的操作。

本说明书实施例提供的代码同步方法能够有效地提升代码同步的效率,尤其是可以支持来自多个外部源的代码同步,可以涵盖各大芯片制造商的基线软件代码的同步,同时支持直接从开源开发平台的代码同步。能够有效降低时间成本和人力成本,极大地缩短代码同步的时间,加速项目研发进程,提升研发效率。

步骤20:在代码总目录下执行代码同步操作,以基于外部源代码同步清单将外部源的代码数据同步至代码总目录下的仓库。

在代码总目录下执行代码同步操作,可以基于外部源代码同步清单将外部源的代码数据同步至代码总目录下的仓库。不同外部源对应的外部源代码同步清单列出了各自需要同步的代码标签和代码分支。该步骤可以将外部源的代码数据全部同步至代码总目录下的仓库中,可以采用拉取git fetch的方式或者其他方式,最终将外部源的代码数据存放在代码总目录下的仓库群。如果多个外部源的代码数据都存放在代码总目录下的仓库群,那么不同外部源之间相同部分的代码数据不会重复同步,提高了代码同步的效率。本说明书实施例可以就各个外部源对应的初始化目录软链接到代码总目录下再在代码总目录下进行代码同步的步骤,大大提升了裸仓库的复用率,降低了磁盘占用率,提升了同步速度。比如针对新发布的Android X版本开源代码,一些芯片制造商基于Android X代码开发并发布了新的基线代码数据,那么在同步第一个芯片制造商的基线代码数据时就会把Android X的开源代码数据一起同步到本地数据库中,而在同步第二个同样基于Android X开发的芯片制造商发布的基线代码数据时,同一代码总目录下的git仓库不会重复同步已存在的数据,而只同步第二个芯片制造商自己新增的基线代码数据,因此显著提高代码同步速度,尤其适合网络速度很慢的情况。将多个外部源的代码数据同步到同一个代码总目录下,可以实现所有代码数据共库以及基于相同开发平台下的代码数据耦合共享开发分支的可持续性带来的加快研发进度和降低研发成本,加快手机版本的研发迭代速度,使手机厂商紧跟芯片制造商以及开源平台的最新技术,始终走在相关领域的最前沿。

可以理解的,本说明书实施例可以适用于开源软件团队、手机软件研发团队、芯片制造商等。采用本说明书实施例提供的代码同步方法能够显著提升代码同步的效率,方便研发部门进行后续的基线升级和补丁的获取,进而加速整个研发的进度。

本说明书实施例提供的代码同步方法可以基于开发平台的代码管理工具执行代码同步操作,不同开发平台的代码管理工具各自有不同的代码同步操作的命令,下面将会做示例性说明。另外本方法通过本地链接的方式关联至不同的外部源从而将不同外部源的代码数据存放至同一个代码总目录下的仓库群。此外本方法自带算法通过获取外部源的最新外部源代码同步清单自动切换本地代码同步清单实现针对性代码同步,可广泛应用于需要基于外部源代码开发的OEM厂商、手机厂商、个人开发者等。

参见图2所示,在一些实施例中,步骤10:将代码总目录下设置对应外部源的初始化目录,所述初始化目录下至少包括外部源代码同步清单之前,本说明书实施例提供的代码同步方法,还包括:

步骤30:在对应外部源的外部源目录下进行初始化操作,生成所述初始化目录。

在本地针对不同的外部源预先建立对应的外部源目录,方便不同外部源的代码数据的同步。在预设的外部源目录下进行初始化操作,生成初始化目录的目的是建立初始化目录与外部源的对应关系,如果存在多个外部源同时进行同步的情况,需要对应不同的外部源在各自对应的外部源目录下生成对应的初始化目录。生成初始化目录的另外一个目的是获取此次代码同步的信息,比如外部源代码同步清单,以便基于该外部源代码同步清单进行后续的代码同步。外部源代码同步清单在每次代码更新时会在外部源中提供,详见后面的分析。

本说明书实施例提供的代码同步方法可以在同一总目录下对不同外部源进行代码操作,将不同外部源的代码数据存放在同一仓库群中,不同外部源之间相同部分不会重复同步,另外在同步之前通过生成初始化目录与外部源建立对应关系。

这里提到的初始化操作可以是基于开发平台的代码管理工具执行代码同步操作,不同开发平台的代码管理工具各自有不同的代码同步操作的命令,目的是生成初始化目录。

针对目前主打的终端开发平台中,我们选取较为流行的Android平台作为开发平台来详细说明本说明书实施例提供的代码同步方法,方便理解。

下面以基于Android平台的手机软件开发为例进行详细说明。

基于Android平台的芯片制造商所发布的基线软件大都通过发布repo下载命令的方式来提供代码下载服务,这里的代码下载服务就是我们前面提到的外部源。

根据外部源的命令REPO_CMD采用repo工具进行初始化操作,外部源的命令不同对应的初始化操作也各不相同。具体如下:

1.高通的REPO_CMD:

repo init-u$CAF_MANIFEST_REPO-b release-m$CAF_MANIFEST--repo-url=git://codeaurora.org/tools/repo.git--repo-branch=caf-stable;

2.MTK的REPO_CMD:

repo init-u$MTK_MANIFEST_REPO-b$MTK_BRANCH-m$MTK_MANIFEST--no-repo-verify;

3.展锐的REPO_CMD:

repo init-u$ST_MANIFEST_REPO-b$ST_MANIFEST--repo-url=ssh://[email protected]:29418/tools/repo.git。

各个芯片制造商的每一套基线软件以及Google的开源代码等外部源的都是通过发布外部源同步代码清单manifest来公布,软件开发者获取外部源代码同步清单manifest后再根据外部源代码同步清单manifest的内容将所有代码数据同步到本地代码仓库群。

其中CAF_MANIFEST_REPO、MTK_MANIFEST_REPO和ST_MANIFEST_REPO是存放manifest代码清单的git仓库,这里通称为代码清单库MANIFEST_REPO。通过repo init命令,首先在当前本地的外部源目录下初始化一个.repo文件夹,就是我们所说的初始化文件夹;然后将manifest代码清单文件,包括CAF_MANIFEST、MTK_MANIFEST和ST_MANIFEST等,我们通称为MANIFEST_FILE,同步到本地外部源目录下的初始化文件夹的.repo/manifest.xml文件里;最后代码同步时再通过repo sync命令读取.repo/manifest.xml里的内容信息,将外部源的存放代码数据的各个代码仓库以裸仓库形式(--镜像mirror)逐个同步到本地代码服务器上的代码仓库群。需要注意的是,有些MANIFEST_FILE是存放在代码清单库MANIFEST_REPO的分支里的,比如这里的-b后面的参数,我们通称为代码清单分支MANIFEST_BRANCH。

所以外部源的同步命令REPO_CMD我们可以总结归纳为:

repo init-u$MANIFEST_REPO-b$MANIFEST_BRANCH-m$MANIFEST_FILE

然后切换到代码总目录all_projects下,执行repo sync--force-sync和repoforall-c命令通过“git fetch”的方式将外部源的代码数据全部同步到代码总目录all_projects下的裸仓库中。

在手机软件研发领域,尤其是Android平台,软件的最上游是Google在开放源代码项目AOSP上发布开源的Android最基础的源码,各个手机芯片制造商基于这套Android的源码再加入自各平台芯片的相关驱动和工具组件等构成一套全新的闭源基线软件,使该闭源基线软件可以在他们自家芯片平台的硬件上运行。而手机厂商则通过向手机芯片制造商购买相关芯片以及配套的闭源基线软件,进行二次设计开发和调试,对手机软件进行进一步的优化使之能够更好的运行在自家生产的手机上运行,最终完成手机产品的设计制造。而绝大多数芯片平台相关的核心修改全部来自芯片制造商对于其基线软件的修改和更新,而软件版本越新功能就越完善,性能就越稳定。因此从芯片制造商那里获取最新的闭源基线软件已经成为整个研发过程中的最重要的一环。而手机厂商可能生产不同型号或者不同系列的手机产品,这些手机产品的芯片可以来自不同的芯片制造商,当Google在开放源代码项目AOSP上发布最新的源码时,各个芯片制造商的代码库都包含谷歌代码的标签和代码分支,每套代码的数据有很大一部分重复。传统的分开分别同步的方式导致同步的体积较大,同步时间较长,磁盘占用率高,并且每个外部源的相同模块相互独立无法相互拣选cherry-pick修改重复利用。

进入对应的外部源目录下执行REPO_CMD加入“--mirror”参数进行mirror镜像上述初始化目录.repo,同时自动设定初始化目录下存放的外部源代码同步清单MANIFEST_FILE为最新的同步清单。

如图3所示,在一些实施例中,本说明书实施例提供的代码同步方法中,当在外部源对应的外部源目录下进行初始化操作,生成所述初始化目录时,步骤10:将代码总目录下设置对应外部源的初始化目录,具体包括:

步骤100:在代码总目录下建立初始化目录的软链接。

将初始化目录设置于代码总目录下的目的在于代码总目录下获取初始化目录中外部源的至少外部源代码同步清单等代码同步信息,便于后续代码总目录下的代码同步操作。

可选地,设置在外部源目录下的初始化目录将初始化目录软链接到代码总目录下,软链接的方式速度快,不容易出错,减少代码总目录的磁盘占用率。

例如基于Android平台的软件开发可以将外部源目录下的初始化目录.repo在代码总目录all_project下建立软链接,具体如下:

all_projects/.repo

cd all_projects

ln-s外部源目录/.repo.repo

本说明书实施例提供的代码同步方法改变传统的分离式独立目录下进行代码同步的方式,通过将在不同外部源目录下生成的初始化目录软链接到唯一的代码总目录下进行代码同步,通过软链接不同代码源的初始化目录来切换不同的外部源并将外部源的代码数据同步至本地服务器上相同的仓库群中,整个过程通过触发自动代码同步任务自动完成。实现代码数据和目录的共享。以及新颖的初始化目录软链接的方式使得同步代码的速度变快很多,未来外部源的数量如果不断增加也不太影响磁盘占用率。另外无需为每个外部源建立同步任务,在对所有外部源初始化操作完成后,只需要代码同步任务调度软链接对应不同外部源的初始化目录即可实现同步不同外部源的代码数据。

参见图4所示,在一些实施例中,步骤S10:在外部源目录下进行初始化操作,生成初始化目录之前,本说明书实施例提供的代码同步方法,还包括:

步骤S60:接收外部源发送的代码同步命令;

在接收到外部源发来的代码同步命令时才启动代码同步工作,本说明书实施例提供的代码同步方法中的各个步骤可以是人工操作也可以是设置自动触发代码同步任务,在检测到有外部源发来的代码同步命令时即可自动触发代码同步任务,这样提高代码同步的效率,减少人工和时间成本。

步骤S70:从代码同步命令识别出对应外部源的参数信息;

启动识别和解析代码同步命令,获取对应外部源的参数信息比如外部源来源,外部源代码同步清单等。

以Android平台为基础的软件开发过程中,具体地在获取到芯片制造商的代码同步命令之后,首先解析REPO_CMD代码同步命令,尤其是代码同步命令中包含的诸如MANIFEST_REPO、MANIFEST_BRANCH和MANIFEST_FILE等关键信息。比如“-u”参数后面为MANIFEST_REPO,“-b”参数后面为MANIFEST_BRANCH,“-m”参数后面为MANIFEST_FILE等。

REPO_CMD=“repo init-u$MANIFEST_REPO-b$MANIFEST_BRANCH-m$MANIFEST_FILE”

MANIFEST_REPO=`echo${REPO_CMD##*-u}|awk'{print$1}'`

MANIFEST_BRANCH=`echo${REPO_CMD##*-b}|awk'{print$1}'`

MANIFEST_FILE=`echo${REPO_CMD##*-m}|awk'{print$1}'`

步骤S80:基于参数信息确定对应外部源的外部源目录。

根据上述获取到的参数信息方知外部源的名字,基于外部源的名字在本地预设的外部源目录群中查找是否存在该外部源目录,如果已经存在则找到该外部源目录,如果不存在,则在外部源目录群中以该名字创建新的外部源目录。

以Android平台为基础的软件开发过程中,根据MANIFEST_REPO来识别外部源具体的名字,在外部源目录群中以这个名字创建文件夹,如果已经有该名字的外部源目录则跳过创建。

参见图5所示,在一些实施例中,步骤S30:在外部源目录下进行初始化操作,生成初始化目录,具体包括:

步骤S300:基于参数信息,至少获取外部源代码同步清单;

从代码同步命令中获取的参数信息中获取外部源代码同步清单。如果参数信息中不存在外部源代码同步清单,自动触发代码同步任务可以通过相关算法计算得到外部源代码同步清单。

步骤S310:至少将外部源代码同步清单存放至初始化目录下。

将外部源代码同步清单存放至初始化目录下的目的是建立初始化目录与外部源的对应关系,以便后续将初始化目录设置于代码总目录下后基于该外部源代码同步清单进行代码同步操作。

参见图6所示,在一些实施例中,步骤S70:从代码同步命令识别出对应所述外部源的参数信息之前,本说明书实施例提供的代码同步方法,还包括:

步骤SA:自动触发代码同步自动执行任务。

当接收到外部源发送的代码同步命令时自动触发代码同步自动执行任务,可以实现自动化同步代码的操作,自动执行代码同步的各个步骤,并且自动执行代码同步时实现了自动增量同步,减少人工干预,极大地降低了基线工程师的工作量,提升了共库和基线代码升级的工作效率。

而且自动触发代码同步自动执行任务时如果发现有新的外部源代码同步清单,则切换到新的外部源代码同步清单进行针对性的同步,做到代码同步完全无须人工干预,从代码同步到内部下载整个过程可以实现完全自动化,大大提升了代码同步的速度和研发效率。理论上代码同步所用时间可以从过去平均花费1至2天的时间到现在可以在几十分钟到1小时之内完成,整个过程人工干预相较以前大大减少,基本实现了代码同步的自动化进行,包括后面建立本地代码同步清单以及将本地代码同步清单自动上传至本地代码同步清单库,方便内部研发人员及时获取最新的代码同步清单并且进行下载。

比如以Android平台为基础的软件开发过程中,可以设定外部源代码同步清单MANIFEST_FILE的获取完全由自动化的代码同步自动执行任务经过git log查询MANIFEST_REPO的修改记录计算得出后,同步至对应的初始化目录下保存该最新的外部源代码同步清单MANIFEST_FILE。自动化代码同步自动执行任务会进入自动下载模式:读取REPO_CMD的默认值,如果存在默认值,则同样解析该代码同步命令中的三要素,即MANIFEST_REPO、MANIFEST_BRANCH和MANIFEST_FILE。检测是否有比初始化目录下保存的外部源代码同步清单更新的MANIFEST_FILE,如果有则自动切换到最新的MANIFEST_FILE进行同步而不使用原有的MANIFEST_FILE,并且将该更新的MANIFEST_FILE保存至初始化目录下。

参见图7所示,在一些实施例中,步骤10:将所述初始化目录设置于代码总目录下之前,本说明书实施例提供的代码同步方法,还包括:

步骤40:确认代码总目录下存在已有的初始化目录;

首先确认代码总目录下是否存在对应该外部源的已有的初始化目录,如有的话,该已有的初始化目录下可能包含之前的软链接或者之前的外部源代码同步清单。

步骤50:删除已有的初始化目录。

比如以Android平台为基础的软件开发过程中,具体流程如下:

①先删除代码总目录下的.repo文件夹,即

rm-r all_projects/.repo

②再将外部源目录下新完成初始化的初始化目录.repo软链接到代码总目录下。

参见图8所示,在一些实施例中,步骤S30:在代码总目录下执行代码同步操作,以基于外部源代码同步清单将外部源的代码数据同步至代码总目录下的仓库之后,本说明书实施例提供的代码同步方法,包括:

步骤S90:基于外部源代码同步清单和本地预设的参数信息建立本地代码同步清单;

以Android平台为基础的软件开发过程中,根据外部源代码同步清单MANIFEST_FILE修改本地代码同步清单中的remote、fetch以及pushurl等元素自动生成本地代码库可以使用的本地代码同步清单OEM_MANIFEST_FILE,并且自动上传至己方服务器比如保存在本地代码清单库,更新本地代码清单库中的代码同步清单,方便内部研发人员或自己使用最新的本地代码同步清单。具体地,将外部源代码同步清单MANIFEST_FILE中remote、fetch以及pushurl改为内部IP地址以及默认名称,其中即结合本地的参数信息修改remote为内部服务器名称,fetch默认为“..”意思是和repo init命令保持一致,而修改pushurl为内部服务器的地址。它们在MANIFEST_FILE中的作用是引导告知代码同步命令从哪个服务器进行代码同步,刚刚同步下来时这两个值的内容是外部源的地址和名字。我们需要将他们改为内部代码库所使用,将这两个值改为内部代码库所使用的值。

删除原始的MANIFEST_FILE中包含remote和fetch pushurl两行内容:

xmlstarlet ed-d"//remote"-d"//default"$SOURCE/$MANIFEST_FILE>$OEM/$OEM_MANIFEST_FILE

加入新的remote和fetch并将pushurl地址设置为内部代码服务器地址:

sed-i'2a\\<remote fetch=".."pushurl="ssh://zte_smartphone.com:29418"name="zte"review="ssh://zte_smartphone.com:29418"/>'$OEM/$OEM_MANIFEST_FILE

sed-i'3a\\<default remote="zte"/>'$OEM/$OEM_MANIFEST_FILE

将$OEM/$OEM_MANIFEST_FILE上传至内部的本地代码同步清单库。

步骤S90’:将本地代码同步清单上传至本地代码清单库。

代码同步自动执行任务将外部源的外部源代码同步清单文件改为内部研发人员可以直接同步的本地代码同步清单。自动化代码同步任务可以在同步代码完成后将来自外部源的外部源代码同步清单文件转换为内部使用的本地代码同步清单文件上传至本地代码清单库,更新本地代码清单库中的代码同步清单,提供最新的本地代码同步清单给研发人员在内部下载代码数据。

实施例二

参照图8所示,为本说明书实施例提供的一种服务器,该服务器包括存储器、处理器、存储在存储器上并可在所述处理器上运行的程序以及用于实现处理器和存储器之间连接通信的数据总线,所述程序被处理器执行时实现如图1至图8所示代码同步方法的步骤。其中如图1所示的具体步骤为:

步骤10:将代码总目录下设置对应外部源的初始化目录,所述初始化目录下至少包括外部源代码同步清单;

可以通过将初始化目录拷贝或者直接创建的方式将初始化目录设置在代码总目录下,目的在于代码总目录下可以从初始化目录下获取代码同步的同步信息,包括初始化目录下对应外部源的至少外部源代码同步清单,便于后续代码总目录下的代码同步操作,以便后续在代码总目录下对外部源进行同步操作。可以在代码总目录下对不同外部源同时进行操作,由于各个芯片制造商在发布代码时使用标签方式发布基线代码,同时分支名也不重复。因此即使在同一个代码总目录下同步也不会相互干扰,便于各个外部源之间相同部分不会重复同步,加快同步效率。

这里所说的代码总目录是预设的进行代码同步的总目录,来自不同外部源的代码数据均保存至该代码总目录下的仓库中。初始化目录可以是一个文件夹,用于存放代码同步的同步信息,可以设置在代码总目录中的根目录下。

具体地,可以使用开发平台的管理工具来管理多仓库代码,尤其适合需要频繁同步开发平台和芯片制造商等发布的代码数据进行软件开发的终端厂商对自己内部平台的代码进行代码同步更新的操作。

本说明书实施例提供的代码同步方法能够有效地提升代码同步的效率,尤其是可以支持来自多个外部源的代码同步,可以涵盖各大芯片制造商的基线软件代码的同步,同时支持直接从开源开发平台的代码同步。能够有效降低时间成本和人力成本,极大地缩短代码同步的时间,加速项目研发进程,提升研发效率。

步骤20:在代码总目录下执行代码同步操作,以基于外部源代码同步清单将外部源的代码数据同步至代码总目录下的仓库。

在代码总目录下执行代码同步操作,可以基于外部源代码同步清单将外部源的代码数据同步至代码总目录下的仓库。不同外部源对应的外部源代码同步清单列出了各自需要同步的代码标签和代码分支。该步骤可以将外部源的代码数据全部同步至代码总目录下的仓库中,可以采用拉取git fetch的方式或者其他方式,最终将外部源的代码数据存放在代码总目录下的仓库群。如果多个外部源的代码数据都存放在代码总目录下的仓库群,那么不同外部源之间相同部分的代码数据不会重复同步,提高了代码同步的效率。

本说明书实施例可以就各个外部源对应的初始化目录软链接到代码总目录下再在代码总目录下进行代码同步的步骤,大大提升了裸仓库的复用率,降低了磁盘占用率,提升了同步速度。如果比如针对新发布的Android X版本开源代码,一些芯片制造商基于Android X代码开发并发布了新的基线代码数据,那么在同步第一个芯片制造商的基线代码数据时就会把Android X的开源代码数据一起同步到本地数据库中,而在同步第二个同样基于Android X开发的芯片制造商发布的基线代码数据时,同一代码总目录下的git仓库不会重复同步已存在的数据,而只同步第二个芯片制造商自己新增的基线代码数据,因此显著提高代码同步速度,尤其适合网络速度很慢的情况。

将多个外部源的代码数据同步到同一个代码总目录下,可以实现所有代码数据共库以及基于相同开发平台下的代码数据耦合共享开发分支的可持续性带来的加快研发进度和降低研发成本,加快手机版本的研发迭代速度,使手机厂商紧跟芯片制造商以及开源平台的最新技术,始终走在相关领域的最前沿。

可以理解的,本说明书实施例可以适用于各大开源软件团队、手机软件研发团队、芯片制造商等。采用本说明书实施例提供的代码同步方法能够显著提升代码同步的效率,方便研发部门进行后续的基线升级和补丁的获取,进而加速整个研发的进度。

本说明书实施例提供的代码同步方法可以基于开发平台的代码管理工具执行代码同步才做,不同开发平台的代码管理工具各自有不同的代码同步操作的命令,下面将会做示例性说明。另外本方法通过本地链接的方式关联至不同的外部源从而实现同步不同外部源的代码数据存放至同一个代码总目录下的仓库群。此外本方法自带算法通过获取代码源的最新外部源代码同步清单自动切换本地代码同步清单实现针对性代码同步,可广泛应用于需要基于外部源代码开发的OEM厂商、手机厂商、个人开发者等。

图9是本说明书的一个实施例服务器900的结构示意图,在硬件层面,该服务器包括处理器920,可选地还包括内部总线940、存储器920。

其中,存储器920,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。存储器920可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该服务器还可能包括其他业务所需要的硬件。

处理器910从非易失性存储器中读取对应的计算机程序到内存中然后运行。处理器910,执行存储器所存放的程序。处理器910和存储器920可以通过内部总线940相互连接,该内部总线940可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。所述总线940可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,处理器可以通过处理器中硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本说明书技术方案,本说明书实施例提供的代码同步方法,将初始化目录设置在代码总目录下,在本地服务器建立对应外部源的初始化目录,并且将外部源代码同步清单存放于该初始化目录下,以此确定初始化目录和外部源的对应关系。不同的外部源可以分别建立不同的初始化目录;然后最后在代码总目录下执行代码同步操作,可以将不同外部源的代码数据全部同步至同一代码总目录下的仓库群,这样不同外部源之间相同部分的代码数据可以自动去重,能够有效提升代码同步效率,降低代码同步的时间成本和人力成本,加快项目研发进程,提升研发效率。特别地,在本地服务器建立对应外部源的外部源目录,在该外部源目录下生成上述初始化目录后,在代码总目录下建立该初始化目录的软链接,可以支持来自多个外部源的代码的同时同步,避免中间出现错误操作。因此采用本申请提供的代码同步方法可以同时涵盖各类芯片制造商的基线软件代码的同步,以及直接从软件开发平台的代码同步,各个外部源之间互不干扰,有效降低代码同步的时间成本和人力成本,尤其适合需要频繁同步各芯片制造商发布的基线软件代码进行软件开发的终端厂商,完成自己开发平台内部代码的更新操作。

实施例三

本说明书实施例提供的一种储存介质,用于计算机可读存储,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如图1至图8所示的代码同步方法的步骤,具体执行以下步骤:

步骤10:将代码总目录下设置对应外部源的初始化目录,所述初始化目录下至少包括外部源代码同步清单;

可以通过将初始化目录拷贝或者直接创建的方式将初始化目录设置在代码总目录下,目的在于代码总目录下可以从初始化目录下获取代码同步的同步信息,包括初始化目录下对应外部源的至少外部源代码同步清单,便于后续代码总目录下的代码同步操作,以便后续在代码总目录下对外部源进行同步操作。可以在代码总目录下对不同外部源同时进行操作,由于各个芯片制造商在发布代码时使用标签方式发布基线代码,同时分支名也不重复。因此即使在同一个代码总目录下同步也不会相互干扰,便于各个外部源之间相同部分不会重复同步,加快同步效率。

这里所说的代码总目录是预设的进行代码同步的总目录,来自不同外部源的代码数据均保存至该代码总目录下的仓库中。初始化目录可以是一个文件夹,用于存放代码同步的同步信息,可以设置在代码总目录中的根目录下。

具体地,可以使用开发平台的管理工具来管理多仓库代码,尤其适合需要频繁同步开发平台和芯片制造商等发布的代码数据进行软件开发的终端厂商对自己内部平台的代码进行代码同步更新的操作。

本说明书实施例提供的代码同步方法能够有效地提升代码同步的效率,尤其是可以支持来自多个外部源的代码同步,可以涵盖各大芯片制造商的基线软件代码的同步,同时支持直接从开源开发平台的代码同步。能够有效降低时间成本和人力成本,极大地缩短代码同步的时间,加速项目研发进程,提升研发效率。

步骤20:在代码总目录下执行代码同步操作,以基于外部源代码同步清单将外部源的代码数据同步至代码总目录下的仓库。

在代码总目录下执行代码同步操作,可以基于外部源代码同步清单将外部源的代码数据同步至代码总目录下的仓库。不同外部源对应的外部源代码同步清单列出了各自需要同步的代码标签和代码分支。该步骤可以将外部源的代码数据全部同步至代码总目录下的仓库中,可以采用拉取git fetch的方式或者其他方式,最终将外部源的代码数据存放在代码总目录下的仓库群。如果多个外部源的代码数据都存放在代码总目录下的仓库群,那么不同外部源之间相同部分的代码数据不会重复同步,提高了代码同步的效率。

本说明书实施例可以就各个外部源对应的初始化目录软链接到代码总目录下再在代码总目录下进行代码同步的步骤,大大提升了裸仓库的复用率,降低了磁盘占用率,提升了同步速度。如果针对新发布的Android X版本开源代码,一些芯片制造商基于AndroidX代码开发并发布了新的基线代码数据,那么在同步第一个芯片制造商的基线代码数据时就会把Android X的开源代码数据一起同步到本地数据库中,而在同步第二个同样基于Android X开发的芯片制造商发布的基线代码数据时,同一代码总目录下的git仓库不会重复同步已存在的数据,而只同步第二个芯片制造商自己新增的基线代码数据,因此显著提高代码同步速度,尤其适合网络速度很慢的情况。

将多个外部源的代码数据同步到同一个代码总目录下,可以实现所有代码数据共库以及基于相同开发平台下的代码数据耦合共享开发分支的可持续性带来的加快研发进度和降低研发成本,加快手机版本的研发迭代速度,使手机厂商紧跟芯片制造商以及开源平台的最新技术,始终走在相关领域的最前沿。

可以理解的,本说明书实施例可以适用于各大开源软件团队、手机软件研发团队、芯片制造商等。采用本说明书实施例提供的代码同步方法能够显著提升代码同步的效率,方便研发部门进行后续的基线升级和补丁的获取,进而加速整个研发的进度。

本说明书实施例提供的代码同步方法可以基于开发平台的代码管理工具执行代码同步操作,不同开发平台的代码管理工具各自有不同的代码同步操作的命令,下面将会做示例性说明。另外本方法通过本地链接的方式关联至不同的外部源从而实现同步不同外部源的代码数据存放至同一个代码总目录下的仓库群。此外本方法自带算法通过获取外部源源的最新外部源代码同步清单自动切换本地代码同步清单实现针对性代码同步,可广泛应用于需要基于外部源代码开发的OEM厂商、手机厂商、个人开发者等。

本说明书技术方案,本说明书实施例提供的代码同步方法,将初始化目录设置在代码总目录下,在本地服务器建立对应外部源的初始化目录,并且将外部源代码同步清单存放于该初始化目录下,以此确定初始化目录和外部源的对应关系。不同的外部源可以分别建立不同的初始化目录;然后最后在代码总目录下执行代码同步操作,可以将不同外部源的代码数据全部同步至同一代码总目录下的仓库群,这样不同外部源之间相同部分的代码数据可以自动去重,能够有效提升代码同步效率,降低代码同步的时间成本和人力成本,加快项目研发进程,提升研发效率。特别地,在本地服务器建立对应外部源的外部源目录,在该外部源目录下生成上述初始化目录后,在代码总目录下建立该初始化目录的软链接,可以支持来自多个外部源的代码的同时同步,避免中间出现错误操作。因此采用本申请提供的代码同步方法可以同时涵盖各类芯片制造商的基线软件代码的同步,以及直接从软件开发平台的代码同步,各个外部源之间互不干扰,有效降低代码同步的时间成本和人力成本,尤其适合需要频繁同步各芯片制造商发布的基线软件代码进行软件开发的终端厂商,完成自己开发平台内部代码的更新操作。

总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。

上述一个或多个实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种软件包管理方法、装置、设备及介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!