CN113126998A - 一种增量源码获取方法、装置、电子设备及存储介质 - Google Patents
一种增量源码获取方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113126998A CN113126998A CN202110429067.7A CN202110429067A CN113126998A CN 113126998 A CN113126998 A CN 113126998A CN 202110429067 A CN202110429067 A CN 202110429067A CN 113126998 A CN113126998 A CN 113126998A
- Authority
- CN
- China
- Prior art keywords
- component
- code
- source code
- submission
- bin
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000008859 change Effects 0.000 claims abstract description 45
- 238000007689 inspection Methods 0.000 claims description 24
- 238000004806 packaging method and process Methods 0.000 claims description 10
- 239000002131 composite material Substances 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 22
- 238000001514 detection method Methods 0.000 abstract description 10
- 238000005457 optimization Methods 0.000 abstract description 6
- 238000012552 review Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 17
- 238000011161 development Methods 0.000 description 10
- 239000013067 intermediate product Substances 0.000 description 10
- 238000007726 management method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000010276 construction Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 4
- 238000012856 packing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000010348 incorporation Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000011981 development test Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000543 intermediate Substances 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/48—Incremental compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例涉及一种增量源码获取方法、装置、电子设备及存储介质。本公开的至少一个实施例中,通过获取合码请求关联的主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,可以确定主仓所依赖组件的组件变更信息;进而可以确定主仓检查提交源码、主仓检查提交源码的增量信息、组件检查提交源码以及组件检查提交源码的增量信息;从而将这些信息进行打包,得到增量源码文件,由于增量源码不经过脱糖等优化处理且可以关联源码,因此利用增量源码文件分析检测一次合码请求涉及的增量问题,可以覆盖源码检测且检出的问题可以精准溯源定位,阻止存在问题的代码合入主分支,避免问题被带到线上。
Description
技术领域
本公开实施例涉及计算机技术领域,具体涉及一种增量源码获取方法、装置、电子设备及存储介质。
背景技术
目前工程源码开发过程中包括主分支(develop)和多个从分支(feature)的协同开发,每个从分支对应不同的开发需求,在从分支完成开发后,通过合码请求(MergeRequest,MR)将从分支合入主分支,进而生成待发布的应用程序(Application,App)。
为了查找从分支由创建到合入主分支过程中产生的增量问题,目前基于编译中间产物并进行分析检查,得到从分支由创建到合入主分支过程中产生的增量问题。
但是,中间产物是源码经过脱糖等优化处理后的产物且无法关联源码,进而基于编译中间产物并进行分析检查,无法覆盖源码检测且检出的问题无法精准溯源定位。
发明内容
为了解决现有技术存在的至少一个问题,本公开的至少一个实施例提供了一种增量源码获取方法、装置、电子设备及存储介质。
第一方面,本公开实施例提出一种增量源码获取方法,所述方法包括:
响应合码请求,获取所述合码请求关联的主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识;
基于所述主仓代码基础提交标识和主仓代码检查提交标识,确定所述主仓所依赖组件的组件变更信息;
基于所述主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,确定主仓检查提交源码及所述主仓检查提交源码的增量信息;并基于所述组件变更信息,确定组件检查提交源码及所述组件检查提交源码的增量信息;
将所述主仓检查提交源码、所述主仓检查提交源码的增量信息、所述组件检查提交源码和所述组件检查提交源码的增量信息打包为增量源码文件。
第二方面,本公开实施例还提出一种增量源码获取装置,所述装置包括:
获取单元,用于响应合码请求,获取所述合码请求关联的主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,并基于所述主仓代码基础提交标识和主仓代码检查提交标识,确定所述主仓所依赖组件的组件变更信息;
确定单元,用于基于所述主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,确定主仓检查提交源码及所述主仓检查提交源码的增量信息;并基于所述组件变更信息,确定组件检查提交源码及所述组件检查提交源码的增量信息;
打包单元,用于将所述主仓检查提交源码、所述主仓检查提交源码的增量信息、所述组件检查提交源码和所述组件检查提交源码的增量信息打包为增量源码文件。
第三方面,本公开实施例还提出一种电子设备,包括:处理器和存储器;所述处理器通过调用所述存储器存储的程序或指令,用于执行如第一方面任一实施例所述增量源码获取方法的步骤。
第四方面,本公开实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如第一方面任一实施例所述增量源码获取方法的步骤。
可见,本公开的至少一个实施例中,通过获取合码请求关联的主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,可以确定主仓所依赖组件的组件变更信息;进而可以确定主仓检查提交源码、主仓检查提交源码的增量信息、组件检查提交源码以及组件检查提交源码的增量信息;从而将这些信息进行打包,得到增量源码文件,由于增量源码不经过脱糖等优化处理且可以关联源码,因此利用增量源码文件分析检测一次合码请求涉及的增量问题,可以覆盖源码检测且检出的问题可以精准溯源定位,阻止存在问题的代码合入主分支,避免问题被带到线上。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是一种多分支协同开发的示意图;
图2是一种基于编译中间产物进行分析检查示意图;
图3是本公开实施例提供的一种增量源码获取方法的示例性流程图;
图4是一种diff(差分)结果示意图;
图5是本公开实施例提供的一种安卓系统下确定组件变更信息的示例性流程图;
图6是一种主仓的组件依赖树信息示意图;
图7是本公开实施例提供的一种iOS系统下确定组件变更信息的示例性流程图;
图8是本公开实施例提供的一种主仓的源码diff流程示意图;
图9是本公开实施例提供的一种针对更新组件的源码diff流程示意图;
图10是本公开实施例提供的一种安卓系统下从更新组件所在仓库的所有组件的源码中获取更新组件的源码的流程示意图;
图11是本公开实施例提供的一种iOS系统下从更新组件所在仓库的所有组件的源码中获取更新组件的源码的流程示意图;
图12是本公开实施例提供的一种针对新增组件的源码diff流程示意图;
图13是本公开实施例提供的一种增量源码获取装置的示例性框图;
图14是本公开实施例提供的一种电子设备的示例性框图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。此处所描述的具体实施例仅仅用于解释本公开,而非对本公开的限定。基于所描述的本公开的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
随着互联网技术的高速发展、国内外用户隐私数据相关法律法规日趋完善,用户隐私数据安全意识也在逐步提升,移动应用上线后出现隐私数据安全等问题的风险也越发不可控。在此背景下,需要在应用程序(application,app)发布前检测分析app存在的问题,以降低安全风险。
目前采用git(一款免费开源的源码分布式版本控制工具)对工程源码进行版本控制管理。从git仓库的视角,git的主要操作有Push(代码提交)和MR(Merge Request,合码请求),同时git支持多分支开发,一个工程往往会有主分支(develop)和多个从分支(feature)等诸多分支用于多人协同开发。
图1是一种多分支协同开发的示意图,新需求的开发往往会从develop分支拉出一个新的feature分支,当新需求在feature分支完成开发测试后会通过MR再次合入develop分支。在图1中,base commit可以理解为代码基础提交标识,review commit可以理解为代码检查提交标识。
commit可以理解为提交标识,在开发人员使用代码版本控制系统过程中,每次向代码仓库提交代码时,系统会生成一条提交记录信息,称为commit。
MR通常关联一个主仓,主仓可以理解为app主工程,可直接构建生成对外发布的app。主仓可以通过maven坐标依赖组件(包括一方组件和/或二方组件),组件可以理解为库工程中的一个模块,一个库工程中可以包括多个模块(可能混合Android系统组件、iOS系统组件),每个模块对应一个组件。其中,一方组件可以理解为本工程开发的组件,二方组件可以理解为其他项目开发的组件,一方组件和二方组件的源码可直接获取。
MR可以关联一个或多个子仓,也可以不关联子仓,子仓可以理解为主仓直接通过工程依赖或源码依赖的子仓。
若改变了主仓或子仓中的代码或者更新了主仓或子仓所依赖组件的信息,就能改变app的功能。而这些改变可能会带有安全问题或bug,因此需要对每一次MR过程中的代码变动进行各项检查、避免安全等问题被带到线上引发应用安全合规等各种风险。
对一个从分支由创建到合入主分支过程(即一次MR过程)中新增的代码进行各项检查,目前基于编译中间产物(通过gradle工具(一种项目自动化构建开源工具)的transform技术拿到编译涉及的所有jar(java archive,一种软件包文件格式)包及class字节码)对字节码使用ASM(一种Java字节码操控框架)进行全量扫描,获取全量问题,如需增量结果则对两个不同版本的全量结果进行差分。
图2是一种基于编译中间产物进行分析检查示意图,在图2中,当feature1分支完成开发测试、准备合入develop分支时,首先会同时触发拉出feature1分支的节点(下文统称为“base commit”节点)和待合入develop分支的节点(下文统称为“review commit”节点)分别进行构建打包,然后两个节点在各自的构建打包过程中分别对编译中间产物进行分析检查并记录问题,构建打包结束即可分别得到图示中的“初始全量问题”和“当前全量问题”,接着再对“初始全量问题”和“当前全量问题”进行diff(差分),即可得到feature1分支从创建到合入develop分支之间的增量问题,最后对存在增量问题的MR进行管控,阻止该feature1分支代码合入develop分支,直到该feature1分支开发者修复所有增量问题或者对无需修改的增量问题进行报备、审批通过后方可合入。
由于编译中间产物对应的源码,在构建打包过程中已经经过脱糖等一系列优化处理,不仅源码文件中涉及的语法糖、精准行号等原始信息均已无法还原,而且源码文件注释中包含的License(许可)等信息也都丢失。因此,基于编译中间产物进行分析检查,无法覆盖源码检测。
另外,由于中间产物无法关联源码,因此基于编译中间产物进行分析检查得到的问题无法直接与代码仓库、组件目标、源码文件、问题所在行数精准关联,也即检出的问题无法精准溯源定位。
为此,本公开实施例提供一种增量源码获取方法、装置、电子设备及存储介质,通过获取合码请求关联的主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,可以确定主仓所依赖组件的组件变更信息;进而可以确定主仓检查提交源码、主仓检查提交源码的增量信息、组件检查提交源码以及组件检查提交源码的增量信息;从而将这些信息进行打包,得到增量源码文件,由于增量源码不经过脱糖等优化处理且可以关联源码,因此利用增量源码文件分析检测一次合码请求涉及的增量问题,可以覆盖源码检测且检出的问题可以精准溯源定位。
图3为本公开实施例提供的一种增量源码获取方法。如图3所示,增量源码获取方法可包括但不限于以下步骤301至304:
301、响应合码请求,获取合码请求关联的主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识。
合码请求(Merge Request,MR)由研发人员提交,由于MR关联一个主仓,因此,响应MR可以直接获取MR关联的主仓的仓库地址,主仓的仓库地址例如为git(一款免费开源的源码分布式版本控制工具)仓库地址。
响应MR还可以直接获取主仓代码基础提交标识(即主仓base commit)以及主仓代码检查提交标识(主仓review commit)。
主仓的仓库地址、主仓base commit和主仓review commit可以统称为一次MR过程的源码变更信息,也即源码变更信息包括:主仓的仓库地址、主仓base commit和主仓review commit。
302、基于主仓代码基础提交标识和主仓代码检查提交标识,确定主仓所依赖组件的组件变更信息。
在获取主仓base commit和主仓review commit后,可以基于主仓base commit和主仓review commi,确定主仓所依赖组件的组件变更信息。其中,组件变更信息包括组件标识和版本号。
组件标识即组件ID,又由于组件可以理解为库工程中的一个模块,因此组件标识可以为模块ID。版本号为组件版本号,也可以为模块版本号。
303、基于主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,确定主仓检查提交源码及主仓检查提交源码的增量信息;并基于组件变更信息,确定组件检查提交源码及组件检查提交源码的增量信息。
主仓检查提交源码可以理解为主仓的diff(差分)源文件。
主仓检查提交源码的增量信息可以理解为经过diff处理得到的主仓diff文件行号信息和行号信息对应的源码。diff处理为git工具提供的一种功能。
组件检查提交源码可以理解为组件的diff(差分)源文件。
组件检查提交源码的增量信息可以理解为经过diff处理得到的组件diff文件行号信息和行号信息对应的源码。
例如,图4为一种diff(差分)结果示意图,在图4中,“-”表示被删除的代码,“+”表示新增或更新后的代码。diff文件行号信息仅包括“+”对应的行号信息。检查提交源码的增量信息包括:行号26和27、行号26对应的源码和行号27对应的源码。
304、将主仓检查提交源码、主仓检查提交源码的增量信息、组件检查提交源码和组件检查提交源码的增量信息打包为增量源码文件。
在得到主仓的diff源文件、主仓diff文件行号信息、组件的diff源文件和组件diff文件行号信息,将这些信息进行打包,例如打包为zip(一种数据压缩文件格式)包,这个zip包即为增量源码文件。
因此,由于增量源码不经过脱糖等优化处理且可以关联源码,因此利用增量源码文件分析检测一次MR涉及的增量问题,可以覆盖源码检测且检出的问题可以精准溯源定位,例如,可以确定问题源自哪个仓库、哪个组件、哪个文件的哪一行,将研发人员定位问题的成本降至零。
另外,对每一次MR涉及的增量源码文件进行分析检测,可以阻止存在问题的代码合入主分支,避免问题被带到线上。
图5是本公开实施例提供的一种安卓系统下确定组件变更信息的示例性流程图。图5所示的流程为图1中步骤302的一种实现方式。
501、基于主仓的仓库地址和主仓代码基础提交标识,获取主仓基础提交源码。
基于主仓的仓库地址和主仓base commit,可以获取(例如下载)主仓基础提交源码,也即主仓base commit的工程源码。
502、基于主仓的仓库地址和主仓代码检查提交标识,获取主仓检查提交源码。
基于主仓的仓库地址和主仓review commit,可以获取(例如下载)主仓检查提交源码,也即主仓review commit的工程源码。
503、基于主仓基础提交源码获取第一组件依赖树信息,并基于主仓检查提交源码获取第二组件依赖树信息。
基于主仓base commit的工程源码,可以通过gradle工具(一种项目自动化构建开源工具)获取第一组件依赖树信息,也即主仓base commit对应的组件依赖树信息。
基于主仓review commit的工程源码,可以通过gradle工具(一种项目自动化构建开源工具)获取第二组件依赖树信息,也即主仓review commit对应的组件依赖树信息。
例如,图6是一种主仓的组件依赖树信息示意图,在图6中示出了主仓直接依赖与传递依赖的组件依赖信息。
504、基于第一组件依赖树信息和第二组件依赖树信息确定组件变更信息。其中,组件变更信息包括:组件ID和版本号。
本实施例中,解析这两个组件依赖树信息,可以得到这两个组件依赖树信息分别对应的组件列表,进而可以对这两个组件列表进行diff处理,得到有变更的组件的maven坐标集合,其中,maven坐标包括groupId、artifactId和version三种信息,version即为版本号。
在确定有变更的组件的maven坐标集合后,可以根据maven坐标中的groupid和artifactid确定组件ID和组件所在的仓库地址,具体地:
“groupid:artifactid”是一个key(键),组件管理模块在发布组件时会以这个key存储这个组件所在工程的git仓库、组件ID等信息,因此,可根据maven坐标中的groupid和artifactid,在组件管理模块中查找组件ID和组件所在工程的仓库地址。
需要说明的是,组件管理模块负责组件的发布、升级,会记录组件所在工程的git仓库、版本号与commit的对应关系。组件管理模块没有记录的组件为三方组件,三方组件无源码,本公开不考虑对三方组件的处理。
图7是本公开实施例提供的一种iOS系统下确定组件变更信息的示例性流程图。图7所示的流程为图3中步骤302的一种实现方式。
701、基于主仓代码基础提交标识获取第一组件版本列表。
在获取主仓base commit后,可以下载工程源码、通过解析podfile(组件依赖配置文件)可以获取主仓base commit对应的第一组件版本列表,第一组件版本列表中包括组件名称和版本号。基于组件名称可以确定组件ID。
702、基于主仓代码检查提交标识获取第二组件版本列表。
在获取主仓review commit后,可以下载工程源码、通过解析podfile(组件依赖配置文件)可以获取主仓review commit对应的第二组件版本列表,第二组件版本列表中包括组件名称和版本号。基于组件名称可以确定组件ID。
703、基于第一组件版本列表和第二组件版本列表确定组件变更信息。
由于两个组件版本列表中均包括组件名称和版本号,因此,可以对这两个组件版本列表进行diff处理,得到组件变更信息。需要说明的是,iOS系统中没有maven坐标的概念,iOS中组件名称等价于maven坐标中的groupid和artifactid构成的key,即“groupid:artifactid”。
需要说明的是,组件变更存在新增组件、更新组件和删除组件,增量源码只需关注新增组件和更新组件。
在一些实施例中,组件变更信息包括更新组件信息和/或新增组件信息。
更新组件信息包括:组件标识(即组件ID)、更新前的版本号和组件更新后的版本号。
新增组件信息包括:组件标识(即组件ID)和版本号。
在一些实施例中,获取主仓的源码变更信息(包括:主仓的仓库地址、主仓basecommit和主仓review commit)之后,可通过主仓的源码diff流程来获取主仓的diff源文件及主仓diff文件行号信息和行号信息对应的源码。图8是本公开实施例提供的一种主仓的源码diff流程示意图。图8所示的流程为图3中步骤303涉及主仓的一种实现方式。
801、基于主仓的仓库地址和主仓代码检查提交标识,获取主仓检查提交源码。
基于主仓的仓库地址和主仓review commit,可以通过git clone命令获取主仓检查提交源码,即主仓的diff源文件。
802、基于主仓代码基础提交标识和主仓代码检查提交标识,确定主仓检查提交源码的增量信息。
基于主仓base commit和主仓review commit,可以确定主仓检查提交源码的增量信息,增量信息包括经过diff处理得到的主仓diff文件行号信息和行号信息对应的源码。
在一些实施例中,对于iOS系统,可以直接对主仓base commit和主仓reviewcommit进行diff处理,得到主仓检查提交源码的增量信息,增量信息包括经过diff处理得到的主仓diff文件行号信息和行号信息对应的源码。
在另一些实施例中,对于安卓系统,需要基于主仓的仓库地址和主仓代码基础提交标识(即主仓base commit),通过git clone命令获取主仓基础提交源码;进而通过gitdiff命令对主仓基础提交源码和主仓检查提交源码进行差分(diff),得到主仓检查提交源码的增量信息,增量信息包括经过diff处理得到的主仓diff文件行号信息和行号信息对应的源码。
图9是本公开实施例提供的一种针对更新组件的源码diff流程示意图。图9所示的流程为图3中步骤303涉及组件的一种实现方式。
901、基于更新组件信息中的组件标识、更新前的版本号和组件更新后的版本号,获取更新组件所在仓库的地址、更新组件的代码基础提交标识和更新组件的代码检查提交标识。
基于更新组件信息中的组件ID、更新前的版本号和组件更新后的版本号,可以获取更新组件所在仓库的地址、更新组件的代码基础提交标识(即更新组件的base commit)和更新组件的代码检查提交标识(即更新组件的review commit)。
902、基于更新组件所在仓库的地址和更新组件的代码检查提交标识,获取该仓库中所有组件的源码;并从该仓库中所有组件的源码中获取更新组件的源码。
更新组件所在仓库中包括该更新组件和其他组件,基于更新组件所在仓库的地址和更新组件的review commit,可以通过git clone命令获取该仓库中所有组件的源码(可以理解为检查提交源码,与review commit相对应)。从该仓库中所有组件的源码中可以获取更新组件的源码,也即更新组件的diff源文件。
903、基于更新组件的代码基础提交标识和更新组件的代码检查提交标识,确定更新组件的源码的增量信息。
基于更新组件的base commit和更新组件的review commit,可以确定更新组件的源码的增量信息,增量信息包括经过diff处理得到的组件diff文件行号信息和行号信息对应的源码。
在一些实施例中,对于iOS系统,可以直接对更新组件的base commit和更新组件的review commit进行diff处理,得到更新组件的源码的增量信息,增量信息包括经过diff处理得到的组件diff文件行号信息和行号信息对应的源码。
在另一些实施例中,对于安卓系统,需要基于更新组件所在仓库的地址和更新组件的base commit,通过git clone命令获取该仓库中所有组件的基础提交源码(记为第一源码),并基于更新组件所在仓库的地址和更新组件的review commit,通过git clone命令获取该仓库中所有组件的检查提交源码(记为第二源码);进而通过git diff命令对第一源码和第二源码进行差分(diff),得到更新组件的检查提交源码的增量信息,增量信息包括经过diff处理得到的组件diff文件行号信息和行号信息对应的源码。
图10是本公开实施例提供的一种安卓系统下从更新组件所在仓库的所有组件的源码中获取更新组件的源码的流程示意图。图10所示的流程为图9中步骤902涉及获取更新组件的源码的一种实现方式。
1001、在该仓库中注入自定义任务,自定义任务用于获取该仓库中所有组件的组件标识和组件路径。
通过组件管理模块获取更新组件所在仓库中的组件标识(或模块标识),通过将gradle工具(一种项目自动化构建开源工具)自定义任务(task)注入该仓库。
1002、执行自定义任务,得到该仓库中所有组件的组件标识和组件路径。
1003、基于该仓库中所有组件的组件标识和组件路径,查找与更新组件的组件标识对应的组件路径。
1004、基于更新组件的组件标识对应的组件路径,获取更新组件的源码。
在一些实施例中,若图10所示的流程未获取到更新组件的源码,则可以按以下流程获取更新组件的源码,包括图10中未示出的步骤1005至1007:
1005、获取更新组件所在仓库(可以理解为库工程或git工程)的配置文件(settings.gradle或settings.gradle.kts)。
1006、解析配置文件,获取仓库中所有的组件标识(或模块标识)以及对应的相对路径,并基于更新组件的组件名称查找更新组件的相对路径;
1007、基于更新组件的相对路径得到更新组件的源码。
更进一步地,如果未查找到更新组件的相对路径,则以更新组件所在仓库的地址作为更新组件的源码的地址(即路径)。
图11是本公开实施例提供的一种iOS系统下从更新组件所在仓库的所有组件的源码中获取更新组件的源码的流程示意图。图11所示的流程为图9中步骤902涉及获取更新组件的源码的一种实现方式。
1101、基于更新组件的组件标识,在该仓库中查找与更新组件的组件标识对应的组件配置文件。
通过组件管理模块获取更新组件所在仓库的地址和更新组件的组件标识(即模块标识,如“A”)。进而可以在该仓库中查找组件标识对应的组件配置文件(.podspec文件),例如查找A对应的A.podspec文件。
1102、从组件配置文件中查找更新组件的源码配置信息。
其中,源码配置信息为.source_files,该信息指向源文件。例如,从A.podspec文件中可以查找到A的.source_files。
1103、基于源码配置信息获得更新组件的源码的相对路径。
解析.source_files信息,可以获取更新组件相关的所有源码文件(即源文件)的相对路径。可以将相对路径保存到一个相对路径列表中。
1104、基于更新组件的源码的相对路径,从该仓库中所有组件的源码中获取更新组件的源码。
通过相对路径列表即可从仓库中将更新组件相关的源文件过滤出来,得到更新组件的源码。
在一些实施例中,还可以在组件管理模块中通过组件发布时记录每个组件在仓库中的相对路径,可以进一步提升获取增量源码的效率。
图12是本公开实施例提供的一种针对新增组件的源码diff流程示意图。图12所示的流程为图3中步骤303涉及组件的一种实现方式。
1201、基于新增组件信息中的组件标识和版本号,获取新增组件所在仓库的地址和新增组件的代码检查提交标识。
基于新增组件信息中的组件ID和版本号,可以获取新增组件所在仓库的地址和新增组件的代码检查提交标识(即新增组件的review commit)。
1202、基于新增组件所在仓库的地址和新增组件的代码检查提交标识,获取该仓库中所有组件的源码;并从该仓库中所有组件的源码中获取新增组件的源码。
新增组件所在仓库中包括该新增组件和其他组件,基于新增组件所在仓库的地址和新增组件的review commit,可以通过git clone命令获取该仓库中所有组件的源码。从该仓库中所有组件的源码中可以获取新增组件的源码,也即新增组件的diff源文件。
从该仓库中所有组件的源码中获取新增组件的源码可参考更新组件的源码获取的相关实施例的步骤,为避免重复,不再赘述。
1203、基于新增组件的源码中所有行号信息,确定新增组件的源码的增量信息。
由于新增组件没有base commit,因此,新增组件的源码的增量信息实质上是新增组件的源码中所有行号信息。
在一些实施例中,合码请求还可以关联一个或多个子仓,增量源码获取方法除了包括图3所示的步骤,还可以包括如下步骤1和2:
步骤1、响应合码请求,获取合码请求关联的子仓的仓库地址、子仓代码基础提交标识(即子仓base commit)和子仓代码检查提交标识(即子仓review commit)。
步骤2、基于子仓的仓库地址、子仓代码基础提交标识和子仓代码检查提交标识,确定子仓检查提交源码及子仓检查提交源码的增量信息。
相应地,将主仓检查提交源码、主仓检查提交源码的增量信息、子仓检查提交源码、子仓检查提交源码的增量信息、组件检查提交源码和组件检查提交源码的增量信息打包为增量源码文件。
步骤1和步骤2的具体过程可参考主仓相关的实施例,为避免重复,不再赘述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员能够理解,本公开实施例并不受所描述的动作顺序的限制,因为依据本公开实施例,某些步骤可以采用其他顺序或者同时进行。另外,本领域技术人员能够理解,说明书中所描述的实施例均属于可选实施例。
图13为本公开实施例提供的一种增量源码获取装置的示例性框图。增量源码获取装置可以包括但不限于:获取单元131、确定单元132和打包单元133
获取单元131,用于响应合码请求,获取合码请求关联的主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,并基于主仓代码基础提交标识和主仓代码检查提交标识,确定主仓所依赖组件的组件变更信息。
确定单元132,用于基于主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,确定主仓检查提交源码及主仓检查提交源码的增量信息;并基于组件变更信息,确定组件检查提交源码及组件检查提交源码的增量信息。
打包单元133,用于将主仓检查提交源码、主仓检查提交源码的增量信息、组件检查提交源码和组件检查提交源码的增量信息打包为增量源码文件。
在一些实施例中,获取单元131基于主仓代码基础提交标识和主仓代码检查提交标识,确定主仓所依赖组件的组件变更信息包括:
基于主仓的仓库地址和主仓代码基础提交标识,获取主仓基础提交源码;
基于主仓的仓库地址和主仓代码检查提交标识,获取主仓检查提交源码;
基于主仓基础提交源码获取第一组件依赖树信息;
基于主仓检查提交源码获取第二组件依赖树信息;
基于第一组件依赖树信息和第二组件依赖树信息确定组件变更信息。
在一些实施例中,获取单元131基于主仓代码基础提交标识和主仓代码检查提交标识,确定主仓所依赖组件的组件变更信息包括:
基于主仓代码基础提交标识获取第一组件版本列表;
基于主仓代码检查提交标识获取第二组件版本列表;
基于第一组件版本列表和第二组件版本列表确定组件变更信息。
在一些实施例中,组件变更信息包括更新组件信息和/或新增组件信息;
更新组件信息包括:组件标识、更新前的版本号和组件更新后的版本号;
新增组件信息包括:组件标识和版本号。
在一些实施例中,确定单元132基于主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,确定主仓检查提交源码及主仓检查提交源码的增量信息包括:
基于主仓的仓库地址和主仓代码检查提交标识,获取主仓检查提交源码;
基于主仓代码基础提交标识和主仓代码检查提交标识,确定主仓检查提交源码的增量信息。
在一些实施例中,确定单元132基于主仓代码基础提交标识和主仓代码检查提交标识,确定主仓检查提交源码的增量信息包括:
基于主仓的仓库地址和主仓代码基础提交标识,获取主仓基础提交源码;
将主仓基础提交源码和主仓检查提交源码进行差分,得到主仓检查提交源码的增量信息,其中,增量信息包括行号信息和行号信息对应的源码。
在一些实施例中,确定单元132基于组件变更信息,确定组件检查提交源码及组件检查提交源码的增量信息包括:
基于更新组件信息中的组件标识、更新前的版本号和组件更新后的版本号,获取更新组件所在仓库的地址、更新组件的代码基础提交标识和更新组件的代码检查提交标识;
基于更新组件所在仓库的地址和更新组件的代码检查提交标识,获取该仓库中所有组件的源码;并从该仓库中所有组件的源码中获取更新组件的源码;
基于更新组件的代码基础提交标识和更新组件的代码检查提交标识,确定更新组件的源码的增量信息。
在一些实施例中,确定单元132从该仓库中所有组件的源码中获取更新组件的源码包括:
在该仓库中注入自定义任务,自定义任务用于获取该仓库中所有组件的组件标识和组件路径;
执行自定义任务,得到该仓库中所有组件的组件标识和组件路径;
基于该仓库中所有组件的组件标识和组件路径,查找与更新组件的组件标识对应的组件路径;
基于更新组件的组件标识对应的组件路径,获取更新组件的源码。
在一些实施例中,确定单元132从该仓库中所有组件的源码中获取更新组件的源码包括:
基于更新组件的组件标识,在该仓库中查找与更新组件的组件标识对应的组件配置文件;
从组件配置文件中查找更新组件的源码配置信息;
基于源码配置信息获得更新组件的源码的相对路径;
基于更新组件的源码的相对路径,从该仓库中所有组件的源码中获取更新组件的源码。
在一些实施例中,确定单元132基于更新组件的代码基础提交标识和更新组件的代码检查提交标识,确定更新组件的组件检查提交源码的增量信息包括:
基于更新组件所在仓库的地址和更新组件的代码基础提交标识,获取该仓库中所有组件的第一源码;并基于更新组件所在仓库的地址和更新组件的代码检查提交标识,获取该仓库中所有组件的第二源码;
将第一源码和第二源码进行差分,得到更新组件的组件检查提交源码的增量信息,增量信息包括行号信息和行号信息对应的源码。
在一些实施例中,确定单元132基于组件变更信息,确定组件检查提交源码及组件检查提交源码的增量信息包括:
基于新增组件信息中的组件标识和版本号,获取新增组件所在仓库的地址和新增组件的代码检查提交标识;
基于新增组件所在仓库的地址和新增组件的代码检查提交标识,获取该仓库中所有组件的源码;并从该仓库中所有组件的源码中获取新增组件的源码;
基于新增组件的源码中所有行号信息,确定新增组件的源码的增量信息。
在一些实施例中,合码请求还关联子仓,获取单元131还用于:响应合码请求,获取合码请求关联的子仓的仓库地址、子仓代码基础提交标识和子仓代码检查提交标识;
确定单元132还用于基于子仓的仓库地址、子仓代码基础提交标识和子仓代码检查提交标识,确定子仓检查提交源码及子仓检查提交源码的增量信息;
打包单元133用于将主仓检查提交源码、主仓检查提交源码的增量信息、子仓检查提交源码、子仓检查提交源码的增量信息、组件检查提交源码和组件检查提交源码的增量信息打包为增量源码文件。
在一些实施例中,增量源码获取装置中各单元的划分仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如增量源码获取装置中各单元中的至少两个单元可以实现为一个单元;增量源码获取装置中各单元也可以划分为多个子单元。可以理解的是,各个单元或子单元能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能。
图14是本公开实施例提供的一种电子设备的结构示意图。如图14所示,电子设备包括:至少一个处理器1401、至少一个存储器1402和至少一个通信接口1403。电子设备中的各个组件通过总线系统1404耦合在一起。通信接口1403,用于与外部设备之间的信息传输。可理解地,总线系统1404用于实现这些组件之间的连接通信。总线系统1404除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但为了清楚说明起见,在图14中将各种总线都标为总线系统1404。
可以理解,本实施例中的存储器1402可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
在一些实施方式中,存储器1402存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统和应用程序。
其中,操作系统,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础任务以及处理基于硬件的任务。应用程序,包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用任务。实现本公开实施例提供的增量源码获取方法的程序可以包含在应用程序中。
在本公开实施例中,处理器1401通过调用存储器1402存储的程序或指令,具体的,可以是应用程序中存储的程序或指令,处理器401用于执行本公开实施例提供的增量源码获取方法各实施例的步骤。
本公开实施例提供的增量源码获取方法可以应用于处理器1401中,或者由处理器1401实现。处理器1401可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1401可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本公开实施例提供的增量源码获取方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1402,处理器1401读取存储器1402中的信息,结合其硬件完成方法的步骤。
本公开实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如增量源码获取方法各实施例的步骤,为避免重复描述,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。
本领域的技术人员能够理解,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
虽然结合附图描述了本公开的实施方式,但是本领域技术人员可以在不脱离本公开的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (15)
1.一种增量源码获取方法,所述方法包括:
响应合码请求,获取所述合码请求关联的主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识;
基于所述主仓代码基础提交标识和主仓代码检查提交标识,确定所述主仓所依赖组件的组件变更信息;
基于所述主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,确定主仓检查提交源码及所述主仓检查提交源码的增量信息;并基于所述组件变更信息,确定组件检查提交源码及所述组件检查提交源码的增量信息;
将所述主仓检查提交源码、所述主仓检查提交源码的增量信息、所述组件检查提交源码和所述组件检查提交源码的增量信息打包为增量源码文件。
2.根据权利要求1所述的方法,其中,所述基于所述主仓代码基础提交标识和主仓代码检查提交标识,确定所述主仓所依赖组件的组件变更信息包括:
基于所述主仓的仓库地址和所述主仓代码基础提交标识,获取主仓基础提交源码;
基于所述主仓的仓库地址和所述主仓代码检查提交标识,获取主仓检查提交源码;
基于所述主仓基础提交源码获取第一组件依赖树信息;
基于所述主仓检查提交源码获取第二组件依赖树信息;
基于所述第一组件依赖树信息和所述第二组件依赖树信息确定组件变更信息。
3.根据权利要求1所述的方法,其中,所述基于所述主仓代码基础提交标识和主仓代码检查提交标识,确定所述主仓所依赖组件的组件变更信息包括:
基于所述主仓代码基础提交标识获取第一组件版本列表;
基于所述主仓代码检查提交标识获取第二组件版本列表;
基于所述第一组件版本列表和所述第二组件版本列表确定组件变更信息。
4.根据权利要求1至3任一项所述的方法,其中,所述组件变更信息包括更新组件信息和/或新增组件信息;
所述更新组件信息包括:组件标识、更新前的版本号和组件更新后的版本号;
所述新增组件信息包括:组件标识和版本号。
5.根据权利要求1所述的方法,其中,所述基于所述主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,确定主仓检查提交源码及所述主仓检查提交源码的增量信息包括:
基于所述主仓的仓库地址和所述主仓代码检查提交标识,获取主仓检查提交源码;
基于所述主仓代码基础提交标识和所述主仓代码检查提交标识,确定所述主仓检查提交源码的增量信息。
6.根据权利要求5所述的方法,其中,所述基于所述主仓代码基础提交标识和所述主仓代码检查提交标识,确定所述主仓检查提交源码的增量信息包括:
基于所述主仓的仓库地址和所述主仓代码基础提交标识,获取主仓基础提交源码;
将所述主仓基础提交源码和所述主仓检查提交源码进行差分,得到所述主仓检查提交源码的增量信息,其中,所述增量信息包括行号信息和所述行号信息对应的源码。
7.根据权利要求4所述的方法,其中,所述基于所述组件变更信息,确定组件检查提交源码及所述组件检查提交源码的增量信息包括:
基于所述更新组件信息中的组件标识、更新前的版本号和组件更新后的版本号,获取更新组件所在仓库的地址、更新组件的代码基础提交标识和更新组件的代码检查提交标识;
基于所述更新组件所在仓库的地址和所述更新组件的代码检查提交标识,获取该仓库中所有组件的源码;并从该仓库中所有组件的源码中获取所述更新组件的源码;
基于所述更新组件的代码基础提交标识和所述更新组件的代码检查提交标识,确定所述更新组件的源码的增量信息。
8.根据权利要求7所述的方法,其中,所述从该仓库中所有组件的源码中获取所述更新组件的源码包括:
在该仓库中注入自定义任务,所述自定义任务用于获取该仓库中所有组件的组件标识和组件路径;
执行所述自定义任务,得到该仓库中所有组件的组件标识和组件路径;
基于该仓库中所有组件的组件标识和组件路径,查找与所述更新组件的组件标识对应的组件路径;
基于所述更新组件的组件标识对应的组件路径,获取所述更新组件的源码。
9.根据权利要求7所述的方法,其中,所述从该仓库中所有组件的源码中获取所述更新组件的源码包括:
基于所述更新组件的组件标识,在该仓库中查找与所述更新组件的组件标识对应的组件配置文件;
从所述组件配置文件中查找所述更新组件的源码配置信息;
基于所述源码配置信息获得所述更新组件的源码的相对路径;
基于所述更新组件的源码的相对路径,从该仓库中所有组件的源码中获取所述更新组件的源码。
10.根据权利要求7所述的方法,其中,所述基于所述更新组件的代码基础提交标识和所述更新组件的代码检查提交标识,确定所述更新组件的组件检查提交源码的增量信息包括:
基于所述更新组件所在仓库的地址和所述更新组件的代码基础提交标识,获取该仓库中所有组件的第一源码;并基于所述更新组件所在仓库的地址和所述更新组件的代码检查提交标识,获取该仓库中所有组件的第二源码;
将所述第一源码和所述第二源码进行差分,得到所述更新组件的检查提交源码的增量信息,所述增量信息包括行号信息和所述行号信息对应的源码。
11.根据权利要求4所述的方法,其中,基于所述组件变更信息,确定组件检查提交源码及所述组件检查提交源码的增量信息包括:
基于所述新增组件信息中的组件标识和版本号,获取新增组件所在仓库的地址和新增组件的代码检查提交标识;
基于所述新增组件所在仓库的地址和所述新增组件的代码检查提交标识,获取该仓库中所有组件的源码;并从该仓库中所有组件的源码中获取所述新增组件的源码;
基于所述新增组件的源码中所有行号信息,确定所述新增组件的源码的增量信息。
12.根据权利要求1所述的方法,其中,所述合码请求还关联子仓,所述方法还包括:
响应合码请求,获取所述合码请求关联的子仓的仓库地址、子仓代码基础提交标识和子仓代码检查提交标识;
基于所述子仓的仓库地址、子仓代码基础提交标识和子仓代码检查提交标识,确定子仓检查提交源码及所述子仓检查提交源码的增量信息;
相应地,将所述主仓检查提交源码、所述主仓检查提交源码的增量信息、所述子仓检查提交源码、所述子仓检查提交源码的增量信息、所述组件检查提交源码和所述组件检查提交源码的增量信息打包为增量源码文件。
13.一种增量源码获取装置,所述装置包括:
获取单元,用于响应合码请求,获取所述合码请求关联的主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,并基于所述主仓代码基础提交标识和主仓代码检查提交标识,确定所述主仓所依赖组件的组件变更信息;
确定单元,用于基于所述主仓的仓库地址、主仓代码基础提交标识和主仓代码检查提交标识,确定主仓检查提交源码及所述主仓检查提交源码的增量信息;并基于所述组件变更信息,确定组件检查提交源码及所述组件检查提交源码的增量信息;
打包单元,用于将所述主仓检查提交源码、所述主仓检查提交源码的增量信息、所述组件检查提交源码和所述组件检查提交源码的增量信息打包为增量源码文件。
14.一种电子设备,包括:处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如权利要求1至12任一项所述方法的步骤。
15.一种非暂态计算机可读存储介质,其中,所述非暂态计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如权利要求1至12任一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110429067.7A CN113126998B (zh) | 2021-04-21 | 2021-04-21 | 一种增量源码获取方法、装置、电子设备及存储介质 |
PCT/CN2022/079596 WO2022222626A1 (zh) | 2021-04-21 | 2022-03-07 | 一种增量源码获取方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110429067.7A CN113126998B (zh) | 2021-04-21 | 2021-04-21 | 一种增量源码获取方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113126998A true CN113126998A (zh) | 2021-07-16 |
CN113126998B CN113126998B (zh) | 2023-11-07 |
Family
ID=76778508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110429067.7A Active CN113126998B (zh) | 2021-04-21 | 2021-04-21 | 一种增量源码获取方法、装置、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113126998B (zh) |
WO (1) | WO2022222626A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022222626A1 (zh) * | 2021-04-21 | 2022-10-27 | 北京字节跳动网络技术有限公司 | 一种增量源码获取方法、装置、电子设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101031882A (zh) * | 2004-06-08 | 2007-09-05 | 达尔特设备公司 | 用于通用设备互操作性平台的设备组招募和内容再现的体系结构、装置和方法 |
US20130036400A1 (en) * | 2011-08-02 | 2013-02-07 | International Business Machines Corporation | Pre-merge conflict avoidance |
CN105302554A (zh) * | 2015-10-23 | 2016-02-03 | 深圳市创维电器科技有限公司 | 一种Android系统自动化程序构建方法及系统 |
CN106528071A (zh) * | 2015-09-15 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 目标代码的选取方法及装置 |
CN107247601A (zh) * | 2017-07-04 | 2017-10-13 | 武汉斗鱼网络科技有限公司 | 开发流程优化方法、装置及存储介质 |
US20180137032A1 (en) * | 2016-11-11 | 2018-05-17 | Atlassian Pty Ltd | Systems and methods for testing source code |
CN108776643A (zh) * | 2018-06-04 | 2018-11-09 | 腾讯科技(武汉)有限公司 | 一种基于版本控制流程的目标代码合并控制方法及系统 |
CN109660261A (zh) * | 2017-10-06 | 2019-04-19 | 想象技术有限公司 | 数据压缩 |
CN111414302A (zh) * | 2020-02-28 | 2020-07-14 | 天津车之家数据信息技术有限公司 | 用于持续集成过程中的静态代码质量分析方法及计算设备 |
CN111475196A (zh) * | 2020-03-30 | 2020-07-31 | 杭州迪普信息技术有限公司 | 编译告警溯源方法、装置、电子设备及计算机可读介质 |
CN112486567A (zh) * | 2020-11-30 | 2021-03-12 | 上海瑞家信息技术有限公司 | 代码的合并请求发送方法、装置、电子设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10289532B2 (en) * | 2015-04-08 | 2019-05-14 | Opshub, Inc. | Method and system for providing delta code coverage information |
CN106484606B (zh) * | 2015-09-01 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 一种代码提交方法和设备 |
CN105404519A (zh) * | 2015-12-07 | 2016-03-16 | 青岛海信电器股份有限公司 | 一种版本控制方法、代码测试方法及系统 |
CN106886445A (zh) * | 2016-06-23 | 2017-06-23 | 阿里巴巴集团控股有限公司 | Java数据包生成方法及设备和信息提取方法及设备 |
CN111796855B (zh) * | 2020-07-22 | 2023-06-09 | 大箴(杭州)科技有限公司 | 一种增量版本更新方法、装置、存储介质及计算机设备 |
CN113126998B (zh) * | 2021-04-21 | 2023-11-07 | 北京字节跳动网络技术有限公司 | 一种增量源码获取方法、装置、电子设备及存储介质 |
-
2021
- 2021-04-21 CN CN202110429067.7A patent/CN113126998B/zh active Active
-
2022
- 2022-03-07 WO PCT/CN2022/079596 patent/WO2022222626A1/zh unknown
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101031882A (zh) * | 2004-06-08 | 2007-09-05 | 达尔特设备公司 | 用于通用设备互操作性平台的设备组招募和内容再现的体系结构、装置和方法 |
US20130036400A1 (en) * | 2011-08-02 | 2013-02-07 | International Business Machines Corporation | Pre-merge conflict avoidance |
CN106528071A (zh) * | 2015-09-15 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 目标代码的选取方法及装置 |
CN105302554A (zh) * | 2015-10-23 | 2016-02-03 | 深圳市创维电器科技有限公司 | 一种Android系统自动化程序构建方法及系统 |
US20180137032A1 (en) * | 2016-11-11 | 2018-05-17 | Atlassian Pty Ltd | Systems and methods for testing source code |
CN107247601A (zh) * | 2017-07-04 | 2017-10-13 | 武汉斗鱼网络科技有限公司 | 开发流程优化方法、装置及存储介质 |
CN109660261A (zh) * | 2017-10-06 | 2019-04-19 | 想象技术有限公司 | 数据压缩 |
CN108776643A (zh) * | 2018-06-04 | 2018-11-09 | 腾讯科技(武汉)有限公司 | 一种基于版本控制流程的目标代码合并控制方法及系统 |
CN111414302A (zh) * | 2020-02-28 | 2020-07-14 | 天津车之家数据信息技术有限公司 | 用于持续集成过程中的静态代码质量分析方法及计算设备 |
CN111475196A (zh) * | 2020-03-30 | 2020-07-31 | 杭州迪普信息技术有限公司 | 编译告警溯源方法、装置、电子设备及计算机可读介质 |
CN112486567A (zh) * | 2020-11-30 | 2021-03-12 | 上海瑞家信息技术有限公司 | 代码的合并请求发送方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
郑源珺: "GitHub社区中Pull Request的重复检测", 《全国优秀博硕士学位论文全文库(硕士) 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022222626A1 (zh) * | 2021-04-21 | 2022-10-27 | 北京字节跳动网络技术有限公司 | 一种增量源码获取方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022222626A1 (zh) | 2022-10-27 |
CN113126998B (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101989802B1 (ko) | 테스트 케이스를 이용하여 테스트를 수행하는 방법 및 장치 | |
CN108845940B (zh) | 一种企业级信息系统自动化功能测试方法和系统 | |
CN111158674B (zh) | 组件管理方法、系统、设备及存储介质 | |
US20130007709A1 (en) | Software configuration management | |
CN111381825B (zh) | 一种小程序的生成方法和装置 | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN111144839A (zh) | 一种项目构建方法、持续集成系统及终端设备 | |
CN106776266B (zh) | 测试工具的配置方法及终端设备 | |
Fazzini et al. | Apimigrator: an api-usage migration tool for android apps | |
CN115033894A (zh) | 一种基于知识图谱的软件组件供应链安全检测方法及装置 | |
US20160055074A1 (en) | Program analysis device, program analysis method, and program analysis program | |
US20200097260A1 (en) | Software application developer tools platform | |
CN114756456A (zh) | 一种持续集成方法、装置以及计算机可读存储介质 | |
CN113126998B (zh) | 一种增量源码获取方法、装置、电子设备及存储介质 | |
CN110990833B (zh) | 一种sdk安全检测方法及相关设备 | |
US9396239B2 (en) | Compiling method, storage medium and compiling apparatus | |
CN111290961A (zh) | 接口测试的管理方法、装置及终端设备 | |
Rahman et al. | A DSL for importing models in a requirements management system | |
US20080172659A1 (en) | Harmonizing a test file and test configuration in a revision control system | |
WO2022257588A1 (zh) | 代码处理方法、系统、计算机集群、介质及程序产品 | |
CN115794214A (zh) | 应用模块元数据管理方法、设备、存储介质及装置 | |
US20210349808A1 (en) | Source quality check service | |
US11740895B2 (en) | Generation of software program repair explanations | |
CN113504904A (zh) | 用户定义函数实现方法、装置、计算机设备和存储介质 | |
CN114816437A (zh) | 一种逆向生成Java实体类的方法、系统和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |