一种远程仓库缓存管理方法、装置、设备及存储介质转让专利

申请号 : CN202311522357.1

文献号 : CN117235023B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈灿彭一宽邹方勇

申请人 : 广州嘉为科技有限公司

摘要 :

本申请提出一种远程仓库缓存管理方法、装置、设备及存储介质,远程仓库缓存管理方法通过当远程仓库中不存在目标文件时,从数据源中获取目标文件,对目标文件进行文件分析,确定文件分析结果,当文件分析结果表征目标文件为所归属的目标软件包的主要文件时,提取目标文件的基础信息以及提取目标软件包对应的元数据信息,将基础信息、元数据信息以及目标软件包在远程仓库中缓存,除了目标文件的基础信息之外还提取目标软件包对应的元数据信息,有利于用户更清晰地了解远程仓库缓存内容的相关信息,提高管理效率;确定目标文件为主要文件后提取基础信息以及元数据信息,有利于提高信息的有效性并且减少远程仓库的占用内存。

权利要求 :

1.一种远程仓库缓存管理方法,其特征在于,包括:根据文件请求,确定所需要的目标文件;

当所述远程仓库中不存在所述目标文件时,从数据源中获取所述目标文件;

对所述目标文件进行文件分析,确定文件分析结果;

当所述文件分析结果表征所述目标文件为所归属的目标软件包的主要文件时,提取所述目标文件的基础信息以及提取所述目标软件包对应的元数据信息;

将所述基础信息、所述元数据信息以及所述目标软件包在所述远程仓库中缓存;

所述对所述目标文件进行文件分析,确定文件分析结果包括:确定所述远程仓库的仓库类型;

确定所述目标文件的文件格式;

根据所述仓库类型以及所述文件格式对所述目标文件进行分析,确定文件分析结果;

所述根据所述仓库类型以及所述文件格式对所述目标文件进行分析,确定文件分析结果包括以下其中之一:当所述仓库类型为npm仓库,且所述文件格式为tgz,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果;

当所述仓库类型为NuGet仓库,且所述文件格式为nupkg,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果;

当所述仓库类型为Maven仓库,且所述文件格式为jar、war、tar、ear、ejb、rar、msi、aar、module、kar、rpm、bz2、tar.gz、tar.xz、tbz、zip、pom中的其中之一,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果;

当所述仓库类型为PyPI仓库,且所述文件格式为URL,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果。

2.根据权利要求1所述远程仓库缓存管理方法,其特征在于:所述提取所述目标软件包对应的元数据信息包括以下其中之一:确定所述目标软件包的软件包类型;

当所述软件包类型为npm时,提取所述目标软件包或者所述远程仓库中缓存的json类元数据文件中的数据信息,得到所述元数据信息;

当所述软件包类型为NuGet时,提取所述目标软件包或者所述远程仓库中缓存的nuspec文件中的数据信息,得到所述元数据信息;

当所述软件包类型为Maven的pom类型时,提取所述目标文件中的数据信息,得到所述元数据信息;

当所述软件包类型为Maven的jar、war、tar、ear、ejb、rar、msi、aar、module、kar、rpm、bz2、tar.gz、tar.xz、tbz、zip中的其中一种类型时,解析所述目标软件包中的元数据文件,并提取所述元数据文件中的所述元数据信息;

当所述软件包类型为PyPI时,提取所述目标软件包中的DIST_INFO文件、METADATA文件以及PKG_INFO文件的其中之一的数据信息,得到所述元数据信息。

3.根据权利要求1所述远程仓库缓存管理方法,其特征在于:所述方法还包括:在所述远程仓库每一次从所述数据源中获取目标文件且目标文件为主要文件时,记录目标文件所归属的目标软件包的下载次数;

根据所述下载次数统计各个目标软件包对应的第一下载量以及各个目标软件包对应的版本的第二下载量;

分别按照所述第一下载量以及所述第二下载量进行排序,将排序结果在显示页面中进行展示。

4.根据权利要求3所述远程仓库缓存管理方法,其特征在于:所述方法还包括:将所述第一下载量小于第一下载阈值的目标软件包进行自动清理,将所述第二下载量小于第二下载阈值的版本的所有目标软件包进行自动清理;

或者,

确定各个目标软件包最后一次使用的第一经过时间,将所述第一经过时间大于时间阈值的目标软件包进行自动清理;

或者,

确定各个版本最后一次使用的第二经过时间,将所述第二经过时间大于时间阈值的版本的所有目标软件包进行自动清理;

或者,

响应于在所述显示页面的操作生成删除指令,所述删除指令用于对目标软件包或者版本的所有目标软件包涉及的目标文件进行删除。

5.根据权利要求3所述远程仓库缓存管理方法,其特征在于:所述将所述基础信息、所述元数据信息以及所述目标软件包在所述远程仓库中缓存包括:将所述目标软件包在所述远程仓库中缓存;

将所述基础信息在所述远程仓库中缓存并在所述显示页面的第一标签页中进行显示,将所述元数据信息所述远程仓库中缓存所述显示页面的第二标签页中进行显示;

提取所述元数据信息中依赖项信息,在所述显示页面的第三标签页中进行显示。

6.一种远程仓库缓存管理装置,其特征在于,包括:确定模块,用于根据文件请求,确定所需要的目标文件;

获取模块,用于当所述远程仓库中不存在所述目标文件时,从数据源中获取所述目标文件;

分析模块,用于对所述目标文件进行文件分析,确定文件分析结果;

提取模块,用于当所述文件分析结果表征所述目标文件为所归属的目标软件包的主要文件时,提取所述目标文件的基础信息以及提取所述目标软件包对应的元数据信息;

缓存模块,用于将所述基础信息、所述元数据信息以及所述目标软件包在所述远程仓库中缓存;

所述对所述目标文件进行文件分析,确定文件分析结果包括:确定所述远程仓库的仓库类型;

确定所述目标文件的文件格式;

根据所述仓库类型以及所述文件格式对所述目标文件进行分析,确定文件分析结果;

所述根据所述仓库类型以及所述文件格式对所述目标文件进行分析,确定文件分析结果包括以下其中之一:当所述仓库类型为npm仓库,且所述文件格式为tgz,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果;

当所述仓库类型为NuGet仓库,且所述文件格式为nupkg,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果;

当所述仓库类型为Maven仓库,且所述文件格式为jar、war、tar、ear、ejb、rar、msi、aar、module、kar、rpm、bz2、tar.gz、tar.xz、tbz、zip、pom中的其中之一,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果;

当所述仓库类型为PyPI仓库,且所述文件格式为URL,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果。

7.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器中存储指令,所述指令由所述处理器加载并执行,以实现如权利要求1至5任一项所述的方法。

8.一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被执行时实现如权利要求1‑5中任一项所述的方法。

说明书 :

一种远程仓库缓存管理方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及软件管理领域,尤其涉及一种远程仓库缓存管理方法、装置、设备及存储介质。

背景技术

[0002] 现今,企业在进行软件开发时,通常会使用制品管理系统来管理软件开发过程中产生的文件。例如在引入文件的过程中,制品管理系统使用远程仓库连接到远程包源,远程仓库承担了用户和远程包源之间的桥梁角色。
[0003] 然而,现今的远程仓库功能单一,只能提供单个文件的缓存功能,用户对文件的了解仅限于单个文件,管理也仅限于单个文件的管理,不利于用户对缓存在远程仓库中的所有文件进行管理,管理繁琐且效率低下。

发明内容

[0004] 本申请实施例提供一种远程仓库缓存管理方法、装置、设备及存储介质,以解决相关技术存在的至少一个问题,技术方案如下:
[0005] 第一方面,本申请实施例提供了一种远程仓库缓存管理的方法,包括:
[0006] 根据文件请求,确定所需要的目标文件;
[0007] 当所述远程仓库中不存在所述目标文件时,从数据源中获取所述目标文件;
[0008] 对所述目标文件进行文件分析,确定文件分析结果;
[0009] 当所述文件分析结果表征所述目标文件为所归属的目标软件包的主要文件时,提取所述目标文件的基础信息以及提取所述目标软件包对应的元数据信息;
[0010] 将所述基础信息、所述元数据信息以及所述目标软件包在所述远程仓库中缓存。
[0011] 在一种实施方式中,所述对所述目标文件进行文件分析,确定文件分析结果包括:
[0012] 确定所述远程仓库的仓库类型;
[0013] 确定所述目标文件的文件格式;
[0014] 根据所述仓库类型以及所述文件格式对所述目标文件进行分析,确定文件分析结果。
[0015] 在一种实施方式中,所述根据所述仓库类型以及所述文件格式对所述目标文件进行分析,确定文件分析结果包括以下其中之一:
[0016] 当所述仓库类型为npm仓库,且所述文件格式为tgz,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果;
[0017] 当所述仓库类型为NuGet仓库,且所述文件格式为nupkg,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果;
[0018] 当所述仓库类型为Maven仓库,且所述文件格式为jar、war、tar、ear、ejb、rar、msi、aar、module、kar、rpm、bz2、tar.gz、tar.xz、tbz、zip、pom中的其中之一,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果;
[0019] 当所述仓库类型为PyPI仓库,且所述文件格式为URL,确定表征所述目标文件为所归属的目标软件包的主要文件的文件分析结果。
[0020] 在一种实施方式中,所述提取所述目标软件包对应的元数据信息包括以下其中之一:
[0021] 确定所述目标软件包的软件包类型;
[0022] 当所述软件包类型为npm时,提取所述目标软件包或者所述远程仓库中缓存的json类元数据文件中的数据信息,得到所述元数据信息;
[0023] 当所述软件包类型为NuGet时,提取所述目标软件包或者所述远程仓库中缓存的nuspec文件中的数据信息,得到所述元数据信息;
[0024] 当所述软件包类型为Maven的pom类型时,提取所述目标文件中的数据信息,得到所述元数据信息;
[0025] 当所述软件包类型为Maven的jar、war、tar、ear、ejb、rar、msi、aar、module、kar、rpm、bz2、tar.gz、tar.xz、tbz、zip中的其中一种类型时,解析所述目标软件包中的元数据文件,并提取所述元数据文件中的所述元数据信息;
[0026] 当所述软件包类型为PyPI时,提取所述目标软件包中的DIST_INFO文件、METADATA文件以及PKG_INFO文件的其中之一的数据信息,得到所述元数据信息。
[0027] 在一种实施方式中,所述方法还包括:
[0028] 在所述远程仓库每一次从所述数据源中获取目标文件且目标文件为主要文件时,记录目标文件所归属的目标软件包的下载次数;
[0029] 根据所述下载次数统计各个目标软件包对应的第一下载量以及各个目标软件包对应的版本的第二下载量;
[0030] 分别按照所述第一下载量以及所述第二下载量进行排序,将排序结果在显示页面中进行展示。
[0031] 在一种实施方式中,所述方法还包括:
[0032] 将所述第一下载量小于第一下载阈值的目标软件包进行自动清理,将所述第二下载量小于第二下载阈值的版本的所有目标软件包进行自动清理;
[0033] 或者,
[0034] 确定各个目标软件包最后一次使用的第一经过时间,将所述第一经过时间大于时间阈值的目标软件包进行自动清理;
[0035] 或者,
[0036] 确定各个版本最后一次使用的第二经过时间,将所述第二经过时间大于时间阈值的版本的所有目标软件包进行自动清理;
[0037] 或者,
[0038] 响应于在所述显示页面的操作生成删除指令,所述删除指令用于对目标软件包或者版本的所有目标软件包涉及的目标文件进行删除。
[0039] 在一种实施方式中,所述将所述基础信息、所述元数据信息以及所述目标软件包在所述远程仓库中缓存包括:
[0040] 将所述目标软件包在所述远程仓库中缓存;
[0041] 将所述基础信息在所述远程仓库中缓存并在所述显示页面的第一标签页中进行显示,将所述元数据信息所述远程仓库中缓存所述显示页面的第二标签页中进行显示;
[0042] 提取所述元数据信息中依赖项信息,在所述显示页面的第三标签页中进行显示。
[0043] 第二方面,本申请实施例提供了一种远程仓库缓存管理装置,包括:
[0044] 确定模块,用于根据文件请求,确定所需要的目标文件;
[0045] 获取模块,用于当所述远程仓库中不存在所述目标文件时,从数据源中获取所述目标文件;
[0046] 分析模块,用于对所述目标文件进行文件分析,确定文件分析结果;
[0047] 提取模块,用于当所述文件分析结果表征所述目标文件为所归属的目标软件包的主要文件时,提取所述目标文件的基础信息以及提取所述目标软件包对应的元数据信息;
[0048] 缓存模块,用于将所述基础信息、所述元数据信息以及所述目标软件包在所述远程仓库中缓存。
[0049] 在一种实施方式中,所述远程仓库缓存管理装置还包括下载统计模块,下载统计模块用于:
[0050] 在所述远程仓库每一次从所述数据源中获取目标文件且目标文件为主要文件时,记录目标文件所归属的目标软件包的下载次数;
[0051] 根据所述下载次数统计各个目标软件包对应的第一下载量以及各个目标软件包对应的版本的第二下载量;
[0052] 分别按照所述第一下载量以及所述第二下载量进行排序,将排序结果在显示页面中进行展示。
[0053] 在一种实施方式中,所述远程仓库缓存管理装置还包括自动清理模块,自动清理模块用于:
[0054] 将所述第一下载量小于第一下载阈值的目标软件包进行自动清理,将所述第二下载量小于第二下载阈值的版本的所有目标软件包进行自动清理;
[0055] 或者,
[0056] 确定各个目标软件包最后一次使用的第一经过时间,将所述第一经过时间大于时间阈值的目标软件包进行自动清理;
[0057] 或者,
[0058] 确定各个版本最后一次使用的第二经过时间,将所述第二经过时间大于时间阈值的版本的所有目标软件包进行自动清理;
[0059] 或者,
[0060] 响应于在所述显示页面的操作生成删除指令,所述删除指令用于对目标软件包或者版本的所有目标软件包涉及的目标文件进行删除。
[0061] 第三方面,本申请实施例提供了一种电子设备,包括:处理器和存储器,该存储器中存储指令,该指令由该处理器加载并执行,以实现上述各方面任一种实施方式中的方法。
[0062] 第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被执行时实现上述各方面任一种实施方式中的方法。
[0063] 上述技术方案中的有益效果至少包括:
[0064] 通过当远程仓库中不存在目标文件时,从数据源中获取目标文件,对目标文件进行文件分析,确定文件分析结果,当文件分析结果表征目标文件为所归属的目标软件包的主要文件时,提取目标文件的基础信息以及提取目标软件包对应的元数据信息,将基础信息、元数据信息以及目标软件包在远程仓库中缓存,除了目标文件的基础信息之外还提取目标软件包对应的元数据信息,有利于用户更清晰地了解远程仓库缓存内容的相关信息,提高管理效率;确定目标文件为主要文件后提取基础信息以及元数据信息,有利于提高信息的有效性并且减少远程仓库的占用内存。
[0065] 上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本申请进一步的方面、实施方式和特征将会是容易明白的。

附图说明

[0066] 在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请公开的一些实施方式,而不应将其视为是对本申请范围的限制。
[0067] 图1为本申请一实施例远程仓库缓存管理方法的步骤流程示意图;
[0068] 图2为本申请一实施例远程仓库缓存管理方法的流程示意图;
[0069] 图3为本申请一实施例第一标签页的示意图;
[0070] 图4为本申请一实施例第二标签页的示意图;
[0071] 图5为本申请一实施例目标软件包的显示示意图;
[0072] 图6为本申请一实施例的远程仓库缓存管理装置的结构框图;
[0073] 图7为本申请一实施例的电子设备的结构框图。

具体实施方式

[0074] 在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本申请的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
[0075] 相关技术中,远程仓库只作为一个制品(软件包)缓存仓库,浏览仓库内容时只相当于一个文件管理系统,对缓存文件的管理只局限于每个文件或目录本身,缺乏缓存文件之间的有机组合管理。用户无法直观地看到仓库的缓存文件中有哪些类型、哪些版本的制品,也无法从更高层级的软件包管理的视角去管理这些缓存文件。同时,没有对制品内容的解析,只作为简单的中间媒介,不支持在页面上进行除单个制品层面上的如删除等处理,存在诸多缺陷。
[0076] 参照图1,示出本申请一实施例的远程仓库缓存管理方法的流程图,该远程仓库缓存管理方法至少可以包括步骤S100‑S500:
[0077] S100、根据文件请求,确定所需要的目标文件。
[0078] S200、当远程仓库中不存在目标文件时,从数据源中获取目标文件。
[0079] S300、对目标文件进行文件分析,确定文件分析结果。
[0080] S400、当文件分析结果表征目标文件为所归属的目标软件包的主要文件时,提取目标文件的基础信息以及提取目标软件包对应的元数据信息。
[0081] S500、将基础信息、元数据信息以及目标软件包在远程仓库中缓存。
[0082] 本申请实施例的远程仓库缓存管理方法可以通过远程仓库执行,例如可以通过计算机、手机、平板、车载终端等终端或者云服务器中的远程仓库执行。
[0083] 本申请实施例的技术方案,通过当远程仓库中不存在目标文件时,从数据源中获取目标文件,对目标文件进行文件分析,确定文件分析结果,当文件分析结果表征目标文件为所归属的目标软件包的主要文件时,提取目标文件的基础信息以及提取目标软件包对应的元数据信息,将基础信息、元数据信息以及目标软件包在远程仓库中缓存,除了目标文件的基础信息之外还提取目标软件包对应的元数据信息,有利于用户更清晰地了解远程仓库缓存内容的相关信息,提高管理效率;确定目标文件为主要文件后提取基础信息以及元数据信息,有利于提高信息的有效性并且减少远程仓库的占用内存。
[0084] 如图2所示,在一种实施方式中,步骤S100中,当用户需要获取某个目标文件时,可以在远程仓库的页面中进行请求操作生成文件请求,远程仓库响应于该文件请求确定该文件请求所需要的目标文件。
[0085] 在一种实施方式中,步骤S200中,当远程仓库中不存在目标文件时,从数据源中获取目标文件。可选地,数据源可以为公有源或者私有源。
[0086] 在一种实施方式中,步骤S300包括步骤S310‑S330:
[0087] S310、确定远程仓库的仓库类型。
[0088] S320、确定目标文件的文件格式。
[0089] 本申请实施例中,为了便于管理远程仓库可以配置不同的仓库类型,每一仓库类型存储对应类型的软件包。其中,文件格式可以通过文件的后缀名来确定,例如.tgz可以确定文件格式为tgz,.bz2可以确定文件格式为bz2等。
[0090] 330、根据仓库类型以及文件格式对目标文件进行分析,确定文件分析结果。
[0091] 在一种实施方式中,步骤S330包括步骤S3301‑S3304中的其中之一:
[0092] S3301、当仓库类型为npm仓库,且文件格式为tgz,确定表征目标文件为所归属的目标软件包的主要文件的文件分析结果。
[0093] 可选地,当仓库类型为npm仓库,且文件格式为tgz,此时可以确定目标文件为其所归属的目标软件包中的主要文件,从而确定表征目标文件为所归属的目标软件包的主要文件的文件分析结果。
[0094] S3302、当仓库类型为NuGet仓库,且文件格式为nupkg,确定表征目标文件为所归属的目标软件包的主要文件的文件分析结果。
[0095] 可选地,当仓库类型为NuGet仓库,且文件格式为nupkg,此时可以确定目标文件为其所归属的目标软件包中的主要文件,从而确定表征目标文件为所归属的目标软件包的主要文件的文件分析结果。
[0096] S3303、当仓库类型为Maven仓库,且文件格式为jar、war、tar、ear、ejb、rar、msi、aar、module、kar、rpm、bz2、tar.gz、tar.xz、tbz、zip、pom中的其中之一,确定表征目标文件为所归属的目标软件包的主要文件的文件分析结果。
[0097] 可选地,当仓库类型为Maven仓库,且文件格式为jar、war、tar、ear、ejb、rar、msi、aar、module、kar、rpm、bz2、tar.gz、tar.xz、tbz、zip、pom中的其中之一,此时可以确定目标文件为其所归属的目标软件包中的主要文件,从而确定表征目标文件为所归属的目标软件包的主要文件的文件分析结果。
[0098] 需要说明的是,如果文件格式为pom,为了更准确地确定目标文件是否为主要文件,可以目标文件中文件内容的packaging标签是否为“pom”,如果是则最终确定目标文件为主要文件。
[0099] S3304、当仓库类型为PyPI仓库,且文件格式为URL,确定表征目标文件为所归属的目标软件包的主要文件的文件分析结果。
[0100] 可选地,当仓库类型为PyPI仓库,且文件格式为URL,
[0101] 此时可以确定目标文件为其所归属的目标软件包中的主要文件,从而确定表征目标文件为所归属的目标软件包的主要文件的文件分析结果。
[0102] 需要说明的是,本申请实施例中示例性地仓库类型以及文件格式列举了上述例子进行说明,其他实施例中不限于上述仓库类型以及文件格式。
[0103] 如图3所示,在一种实施方式中,步骤S400中,当文件分析结果表征目标文件为所归属的目标软件包的主要文件时,提取目标文件的基础信息,基础信息包括但不限于目标文件的名称(制品名称),大小、路径(获取或者存储的路径)、获取目标文件的时间(创建时间)、创建人、版本(例如文件的版本或者所属的软件包的版本)。需要说明的是,当目标文件在远程仓库中缓存,如果后续有更新时,基础信息还可以包括更新人、最后修改时间(例如最后一次更新的时间),目标文件的使用说明、校验说明(checksums),包括SHA256以及MD5的内容。
[0104] 如图2所示,在一种实施方式中,步骤S400中提取目标软件包对应的元数据信息时,这些信息有可能存放在一个单独的文件(记为数据文件)中,也可能存放在目标文件中,因此可以通过读取目标软件包中的数据文件或者目标文件的信息得到元数据信息。
[0105] 可选地,步骤S400中提取目标软件包对应的元数据信息,可以包括步骤S410以及包括S420‑S460中的其中之一:
[0106] S410、确定目标软件包的软件包类型。
[0107] 类似地,可以通过目标软件包的后缀或者通过读取目标软件包中的能表征格式的字段确定目标软件包的软件包类型。
[0108] S420、当软件包类型为npm时,提取目标软件包或者远程仓库中缓存的json类元数据文件中的数据信息,得到元数据信息。
[0109] 在一种实施方式中,json类元数据文件可以为package.json包级别元数据文件或者{package}‑{version}.json版本元数据文件。需要说明的是,一些实施例中可以事先在远程仓库中设置该远程仓库所支持缓存的目标软件包的json类元数据文件,因此当确定软件包类型为npm时,可以提取目标软件包的json类元数据文件中的数据信息或者提取远程仓库中缓存的json类元数据文件中的数据信息,得到元数据信息。
[0110] S430、当软件包类型为NuGet时,提取目标软件包或者远程仓库中缓存的nuspec文件中的数据信息,得到元数据信息。
[0111] 在一种实施方式中,类似地远程仓库可以事先缓存所支持的nuspec文件,当确定软件包类型为NuGet时,提取目标软件包的nuspec文件中的数据信息或者提取远程仓库中缓存的nuspec文件中的数据信息,得到元数据信息。
[0112] S440、当软件包类型为Maven的pom类型时,提取目标文件中的数据信息,得到元数据信息。
[0113] 在一种实施方式中,当软件包类型为Maven的pom类型时,可以直接从目标软件包中提取数据信息,得到元数据信息。
[0114] S450、当软件包类型为Maven的jar、war、tar、ear、ejb、rar、msi、aar、module、kar、rpm、bz2、tar.gz、tar.xz、tbz、zip中的其中一种类型时,解析目标软件包中的元数据文件,并提取元数据文件中的元数据信息。
[0115] 在一种实施方式中,当软件包类型为Maven的jar、war、tar、ear、ejb、rar、msi、aar、module、kar、rpm、bz2、tar.gz、tar.xz、tbz、zip中的其中一种类型时,需要解析目标软件包中的元数据文件提取groupId、artifactId、classifier、packaging、依赖项等信息,得到元数据信息。
[0116] S460、当软件包类型为PyPI时,提取目标软件包中的DIST_INFO文件、METADATA文件以及PKG_INFO文件的其中之一的数据信息,得到元数据信息。
[0117] 在一种实施方式中,当软件包类型为PyPI时,如果为whl格式,提取目标软件包中的DIST_INFO文件或者METADATA文件中的数据信息,得到元数据信息;当软件包类型为PyPI时,如果目标软件包为tar、tar.gz、zip、tgz中的其中之一的格式,提取PKG_INFO文件中的数据信息,得到元数据信息。
[0118] 需要说明的是,元数据信息可以包括license(证书)、maintainers(作者)、keywords(关键词)、deprecated(deprecated注解)、name(包名)、version(版本号)、描述、主页、依赖项、自述、标签、版权、软件包类型、简单引用项、引用项组、依赖项组、框架、版本区间等。如图4所示,示出目标软件包magic‑string的部分元数据信息,如license、maintainers、keywords、deprecated、name、version等信息。
[0119] 在一种实施方式中,步骤S500可以包括步骤S510‑S530:
[0120] S510、将目标软件包在远程仓库中缓存。
[0121] 本申请实施例中,确定目标文件后可以将目标文件或者将目标文件所归属的目标软件包进行在远程仓库中缓存,远程仓库中具有显示页面,用户可以通过显示页面查看远程仓库中缓存的内容,如文件、软件包或者相关的信息等等,并且可以在显示页面中通过相应的操作切换显示页面中的第一标签页、第二标签页或者第三标签页,进行不同的信息的查看。
[0122] S520、将基础信息在远程仓库中缓存并在显示页面的第一标签页中进行显示,将元数据信息远程仓库中缓存显示页面的第二标签页中进行显示。
[0123] 可选地,根据基础信息以及基础信息可以构建目标软件包的包版本信息。具体地,为了便于用户观看,进一步提高用户对于远程仓库中缓存的目标软件包的管理效率,将基础信息在远程仓库中缓存并在显示页面的第一标签页中进行显示,将元数据信息远程仓库中缓存显示页面的第二标签页中进行显示。
[0124] S530、提取元数据信息中依赖项信息,在显示页面的第三标签页中进行显示。
[0125] 在一种实施方式中,由于依赖项信息对于用户的管理具有较强的参照价值,因此可以从提取元数据信息中依赖项信息,例如可以包括依赖项、依赖项组等,将依赖项信息单独用一个第三标签页进行显示。需要说明的是,当存在第三标签页时,第二标签页中可以显示依赖项信息,也可以不显示依赖项信息,不作具体限定。
[0126] 在一种实施方式中,本申请实施例的方法还可以包括步骤S610‑S630:
[0127] S610、在远程仓库每一次从数据源中获取目标文件且目标文件为主要文件时,记录目标文件所归属的目标软件包的下载次数。
[0128] 本申请实施例中,在远程仓库每一次从数据源中获取目标文件且目标文件为主要文件时,远程仓库会下载目标文件所归属的目标软件包,此时记录下载次数。需要说明的是,从数据源中获取目标文件包括第一次下载、重新下载覆盖等情况都会计算下载次数。
[0129] S620、根据下载次数统计各个目标软件包对应的第一下载量以及各个目标软件包对应的版本的第二下载量。
[0130] 本申请实施例中,为了便于管理提供1)包级别的下载量统计:根据下载次数统计各个目标软件包对应的第一下载量;2)版本级别的下载量统计:根据下载次数统计各个目标软件包对应的版本的第二下载量,因为同一个包名其对应的版本有可能不一样。
[0131] S630、分别按照第一下载量以及第二下载量进行排序,将排序结果在显示页面中进行展示。
[0132] 然后,按照第一下载量由大到小进行排列得到第一排序子结果,按照第二下载量由大到小进行排列得到第二排序子结果,然后将第一排序子结果以及第二排序子结果构成的排序结果在在显示页面中进行展示。其中,远程仓库中可以具有多个显示页面,或者可以将第一下载量、第二下载量以后排序结果添加至第一标签页或者第二标签页中进行显示。
[0133] 在一种实施方式中,在显示页面中显示目标软件包而不直接显示目标文件。如图5所示,一个显示页面中显示目标软件包junit‑bom、kotlin‑bom等,并可以显示最新的版本,最后最后修改时间、版本数、下载(量)统计。
[0134] 在一种实施方式中,本申请实施例中可以配置定时执行的自动清理任务,定时自动清理,自动清理任务的方法可以包括步骤S710‑S740中的其中之一:
[0135] S710、将第一下载量小于第一下载阈值的目标软件包进行自动清理,将第二下载量小于第二下载阈值的版本的所有目标软件包进行自动清理。
[0136] 可选地,可以事先设定第一下载阈值以及第二下载阈值,第一下载阈值以及第二下载阈值的大小根据需要设定。在确定第一下载量以及第二下载量后,将第一下载量小于第一下载阈值的目标软件包进行自动清理,将第二下载量小于第二下载阈值的版本的所有目标软件包进行自动清理。
[0137] S720、确定各个目标软件包最后一次使用的第一经过时间,将第一经过时间大于时间阈值的目标软件包进行自动清理。
[0138] 可选地,时间阈值可以根据实际设定。需要说明的是,由于每一次获取目标文件、更新目标文件时都会记录有相应的时间,因此可以根据当前时间以及目标软件包最后一次的使用时间确定各个目标软件包最后一次使用的第一经过时间,然后将第一经过时间大于时间阈值的目标软件包进行自动清理,节省远程仓库的缓存空间。
[0139] S730、确定各个版本最后一次使用的第二经过时间,将第二经过时间大于时间阈值的版本的所有目标软件包进行自动清理。
[0140] 类似地,可以根据当前时间以及各个版本最后一次的使用时间确定各个版本最后一次使用的第二经过时间,然后将第二经过时间大于时间阈值的版本的所有目标软件包进行自动清理。
[0141] S740、响应于在显示页面的操作生成删除指令,删除指令用于对目标软件包或者版本的所有目标软件包涉及的目标文件进行删除。
[0142] 可选地,为了满足用户的个性化需求,用户在显示页面中查看到排序结果后,可以在显示页面中进行操作生成删除指令,远程仓库响应该删除指令删除用户需要删除的目标软件包或者将版本的所有目标软件包涉及的目标文件进行删除。例如,需要删除某个版本时,基于删除指令删除该版本的所有目标软件包所涉及的在远程仓库中缓存的所有目标文件,与该版本的目标软件包不相关的其他缓存的目标文件不会被删除。
[0143] 需要说明的是,本申请实施例的方式不同于传统方式的直接对缓存文件的单独判断自动删除,包版本的自动清理以一个更高的层级和视野去进行缓存清理,在清理一个版本时,该版本所涉及的且与其它版本无关的所有缓存文件都会被一并清理,由后台服务自动完成。而对于自动清理策略来说,我们提供了直观的UI界面(显示页面),用户可以在远程仓库的显示页面轻松地进行多满足条件的自动清理策略的配置,例如滚动清理多少天内未使用过的包或版本、设置需要自动清理的包的匹配规则等等,这些策略语义清晰,便于用户使用。
[0144] 需要说明的是,缓存在远程仓库的目标软件包以及目标文件,可以发送至用户的客户端中,例如响应于文件请求最终发送目标文件或者目标软件包至用户的客户端中。
[0145] 通过本申请实施例的方法,解决了现有的远程仓库需要用户手动管理单独的缓存文件的繁琐操作、当一个软件包缓存涉及到分散的多个缓存文件时难以进行管理的问题,在用户从远程仓库拉取目标软件包并缓存到远程仓库后,远程仓库不仅仅负责缓存加速功能,远程仓库的后台服务缓存基础信息、下载量、元数据信息并可以为用户展示,用户从显示页面上就能查看缓存仓库中包含的所有目标软件包以及相关的信息,也能极其方便地对进行管理,有利于提高管理效率。同时,提供包级别以及版本级别的自动清理,以及为用户提供包级别以及版本级别的查看、使用、删除和自动清理、安全扫描等管理,提高便利性,进一步提高管理效率。另外,进行目标软件包的删除时会删除所有与该目标软件包的相关的所有目标文件,具体地在确定目标软件包时,远程仓库的后台服务会根据缓存的路径进行归属判断从而删除与该目标软件包的相关的目标文件因此用户无需关心具体的缓存文件,一切都在更高的包层级和版本层级上。而在进行版本层级删除时,如果删除的不是所属目标软件包的最后一个版本,那么这个操作将不会影响包层级的其他版本的目标软件包以及其他版本的目标软件包所涉及的缓存的目标文件,以免影响其它版本的使用。不管是以什么层级进行缓存的删除,对应在数据库中创建的包版本信息也会同步删除。
[0146] 参照图6,示出了本申请一实施例的远程仓库缓存管理装置的结构框图,该装置可以包括:
[0147] 确定模块,用于根据文件请求,确定所需要的目标文件;
[0148] 获取模块,用于当远程仓库中不存在目标文件时,从数据源中获取目标文件;
[0149] 分析模块,用于对目标文件进行文件分析,确定文件分析结果;
[0150] 提取模块,用于当文件分析结果表征目标文件为所归属的目标软件包的主要文件时,提取目标文件的基础信息以及提取目标软件包对应的元数据信息;
[0151] 缓存模块,用于将基础信息、元数据信息以及目标软件包在远程仓库中缓存。
[0152] 本申请实施例中,远程仓库缓存管理装置还包括下载统计模块,下载统计模块用于:
[0153] 在远程仓库每一次从数据源中获取目标文件且目标文件为主要文件时,记录目标文件所归属的目标软件包的下载次数;
[0154] 根据下载次数统计各个目标软件包对应的第一下载量以及各个目标软件包对应的版本的第二下载量;
[0155] 分别按照第一下载量以及第二下载量进行排序,将排序结果在显示页面中进行展示。
[0156] 本申请实施例中,远程仓库缓存管理装置还包括自动清理模块,自动清理模块用于:
[0157] 将第一下载量小于第一下载阈值的目标软件包进行自动清理,将第二下载量小于第二下载阈值的版本的所有目标软件包进行自动清理;
[0158] 或者,
[0159] 确定各个目标软件包最后一次使用的第一经过时间,将第一经过时间大于时间阈值的目标软件包进行自动清理;
[0160] 或者,
[0161] 确定各个版本最后一次使用的第二经过时间,将第二经过时间大于时间阈值的版本的所有目标软件包进行自动清理;
[0162] 或者,
[0163] 响应于在显示页面的操作生成删除指令,删除指令用于对目标软件包或者版本的所有目标软件包涉及的目标文件进行删除。
[0164] 本申请实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
[0165] 参照图7,示出了本申请一实施例电子设备的结构框图,该电子设备包括:存储器310和处理器320,存储器310内存储有可在处理器320上运行的指令,处理器320加载并执行该指令实现上述实施例中的远程仓库缓存管理方法。其中,存储器310和处理器320的数量可以为一个或多个。
[0166] 在一种实施方式中,电子设备还包括通信接口330,用于与外界设备进行通信,进行数据交互传输。如果存储器310、处理器320和通信接口330独立实现,则存储器310、处理器320和通信接口330可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect ,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture ,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0167] 可选的,在具体实现上,如果存储器310、处理器320及通信接口330集成在一块芯片上,则存储器310、处理器320及通信接口330可以通过内部接口完成相互间的通信。
[0168] 本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的远程仓库缓存管理方法。
[0169] 本申请实施例还提供了一种芯片,该芯片包括,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本申请实施例提供的方法。
[0170] 本申请实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行申请实施例提供的方法。
[0171] 应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application  specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammablegate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(advanced RISC machines,ARM)架构的处理器。
[0172] 进一步地,可选的,上述存储器可以包括只读存储器和随机存取存储器,还可以包括非易失性随机存取存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(read‑only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic random access memory ,DRAM) 、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
[0173] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络,或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
[0174] 在本说明书的描述中,参考术语“一个实施例”“一些实施例”“示例”“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0175] 此外,术语“第一”“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0176] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
[0177] 在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
[0178] 应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0179] 此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
[0180] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。