CN111142895A - 基于svn模块的项目中组件的同步更新方法和系统 - Google Patents
基于svn模块的项目中组件的同步更新方法和系统 Download PDFInfo
- Publication number
- CN111142895A CN111142895A CN201911173447.8A CN201911173447A CN111142895A CN 111142895 A CN111142895 A CN 111142895A CN 201911173447 A CN201911173447 A CN 201911173447A CN 111142895 A CN111142895 A CN 111142895A
- Authority
- CN
- China
- Prior art keywords
- components
- module
- project
- svn
- component
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于SVN模块的项目中组件的同步更新方法,包括以下步骤:将所有组件统一在一个SVN模块中管理,且在SVN模块中记录各组件的更新版本;各项目通过pod代码管理模块直接调取所用组件在SVN模块中的所需版本以及由pod代码管理模块提供相应配置文件,以完成各项目中组件的同步更新。通过本发明的更新方法,能够规避利用pod代码管理模块下载组件的所需版本这个步骤,提高更新效率。本发明还公开了基于该方法的系统,电子设备以及存储介质。
Description
技术领域
本发明涉及计算机领域。更具体地,涉及SVN模块的项目中组件的同步更新方法和系统,电子介质以及存储设备。
背景技术
在一个公司的发展过程中,随着业务规模的增长,会有越来越多的项目。在开发这些项目的过程中,以及伴随着技术的积累,会有越来越多的技术代码。特别是在主要面向用户的前端的手机应用软件app方面,在细分领域如有不同的业务类型,就需要越来越多的app来承载不同业务的展示。在进行新业务代码的过程,现有的方式是通过拷贝原有项目的代码集成到新的项目中,而在拷贝之后,原项目中的代码与新项目中的代码之间就再也没有了联系,也就是切断了彼此之间的联系。
这种情形如图1所示:组件A1,A2,A3,A4,和A5中的代码是具有相同或者相似的功能,可能就是从一个组件代码中演变来的。例如之前的组件unit为初始项目M中的一部分,而项目A,B,C,D,和E是从初始项目M衍生出来的项目,这些项目A-E均要用到初始项目M中的组件unit。因此在开发的时候,项目A-E均需要各自拷贝初始项目M中的组件unit的全部代码,而构成了项目A-E中各自的组件A1-A5。
但是,之后初始项目M自己的组件unit可能需要进行更新,甚至会进行多次更新。组件unit更新之后,项目中的组件A1-A5并不会随之而同步更新,只能再手动更新,或者造成漏更新。
因此,现在解决上述技术问题的方法是:利用pod代码管理模块和远程github平台来解决上述问题。具体来说为:首先将初始项目M中的组件unit的全部代码上传至远程github平台,进行托管。然后利用pod代码管理模块记录组件unit在github平台处的地址,并且关联组件unit与项目A-E,生成针对各项目A-E的配置文件。当组件unit需要更新时,更新远程github平台上的unit组件。这样pod代码管理模块会下载所需版本的组件unit到本地,然后再利用配置文件,编译入各项目A-E中。这样能够保证项目A-E中的与组件unit关联的组件A1-A5均为同一的所需版本。
换言之,现有基于pod的github实现方案。把组件托管到github上,并把github地址同步到pod的仓库文件列表中,在下载的过程中,先要同步远端的pod仓库,然后在pod仓库中,找到组件的github地址,然后下载源码到本地,再进行编译。
比如下载github上面的组件库,代码如下
pod'NIMKit/Full','~>2.11.5'
但是,上述方法至少存在以下问题:首先,组件要存放在远端github平台上,安全性存在问题。其次,项目A-E进行组件更新时,需要pod代码管理模块在远端github平台上下载组件的所需版本,然后再进行更新,这样会导致更新要花费较长的时间,并且受制于网络状态。
为此,需要研发一种新技术,至少能够解决以下技术问题:
1,解决同步pod仓库的耗费大量时间的问题,由于pod公共库里面有几百万个组件库,每次同步pod仓库配置,都需要耗费很大的时间。
2,解决私有代码不能公开到github上面的问题。公司有些业务组件或者核心功能代码,不适合开放到github上,这就需要一种私有化,低成本的解决方案。
3,解决冗余代码太多,不同项目里面的相同组件,都是相同的代码,每个项目中,都要重新编写几乎一致的代码,造成项目里面存在很多的冗余代码。
4,解决组件维护困难,在不同的项目中,每个项目的组件都要单独维护,如果某个组件出现bug,则需要修改所有项目里面的组件,而且会出现可能某些项目忘记修改的情况。
5,解决组件不能SDK化,在分配到各个项目的组件中,功能组件掺杂业务代码,业务组件掺杂不属于自己的业务。后期不方便对组件SDK化。
发明内容
本发明的一个目的是解决至少上述问题,并提供至少后面将说明的优点。
为了实现本发明的这些目的和其它优点,提供了一种基于SVN模块的项目中组件的同步更新方法,包括以下步骤:
将所有组件统一在一个SVN模块中管理,且在SVN模块中记录各组件的更新版本;
各项目通过pod代码管理模块直接调取所用组件在SVN模块中的所需版本以及由pod代码管理模块提供相应配置文件,以完成各项目中组件的同步更新。
在上述技术方案中,本发明利用SNV模块中记录的版本信息,能够准确找到组件unit的所需版本,然后在利用pod代码管理模块,直接将所需版本的组件unit更新到项目A-E中,而无需将所需版本的unit存储在远程平台上,也无在远程平台上下载。节约了时间,提高了可靠性。所需版本通常为最新版本。
优选的是,所述pod代码管理模块中包括Podfile说明文件,用以指定待更新项目的WorkSpace,project,target,以及待更新组件的路径和版本。
优选的是,所述配置文件中包含组件的版本信息,所述项目通过所述配置文件获取组件的所需版本信息。
优选的是,所述组件相应的配置文件也存储在SVN模块中。这样能够更快速地编译项目A-E。
本发明还提供了基于SVN模块的项目中组件的同步更新系统,包括:SVN模块,用于统一管理所有组件,且在SVN模块中记录各组件的更新版本;
pod代码管理模块:各项目通过pod管理系统直接调取所用组件在SVN模块中的所需版本以及由pod代码管理模块提供相应配置文件,以完成各项目中组件的同步更新。
优选的是,所述pod代码管理模块中包括Podfile说明文件,用以指定待更新项目的WorkSpace,project,target,以及待更新组件的路径和版本。
优选的是,所述配置文件中包含组件的版本信息,所述项目通过所述配置文件获取组件的所需版本信息。
优选的是,所述组件相应的配置文件也存储在SVN模块中。
本发明还公开了一种电子设备,其中,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行上述方法中任一项所述的方法。
本发明还公开了一种存储介质,其上存储有计算机程序,其中,该程序被处理器执行时,实现上述方法中任一项所述的方法。
除了能解决上述技术问题,本发明至少包括以下有益效果:1)提高项目更新效率,节约更新时间;2)减少重复代码;3)提高更新的可靠性,不需要依赖于通信网络,规避泄密风险。
本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。
附图说明
图1为表现本发明背景技术的组件与项目之间的关系图;
图2为本发明利用pob代码管理模块更新项目的示意图;
图3为本发明基于SVN模块的项目中组件的同步更新方法的示意图;
图4为本发明基于SVN模块的项目中组件的同步更细系统的示意图;以及
图5为表示组件与项目之间关系的示意图。
具体实施方式
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
应当理解,本文所使用的诸如“具有”、“包含”以及“包括”术语并不配出一个或多个其它元件或其组合的存在或添加。
首先进行术语解释:
xcode WorkSpace:工作空间:即为项目代码的编译环境;
pod:pod代码管理工具;
SVN:版本控制系统,组件化模块的仓库。
本发明涉及基于SVN的pod私有化组件化平台。如图5所示:本方案是通过将组件统一到一个仓库中管理,所有的项目的组件都从一个仓库下载维护,一次更新维护,所有项目均能更新。这个仓库就用SVN模块来实现。
SVN是一个开放源代码的版本控制系统,SVN管理着随时间改变的数据。这些数据放置在一个中央资料档案库(Repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。SVN是一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。因此可以作为仓库来使用。
在图5中,组件A和组件B是两个独立的组件,所有的组件统一在一个SVN中管理,每个组件都是独立的项目,可以单独维护,项目A可以引用组件A,B,C…,项目B也可以引用组件A,B,C…,组件有变更的时候,只需要更新相应的组件代码即可。
本发明替换了github仓库,改为私有的SVN库。优化了pod install的流程,省去了pod库的同步浪费大量时间的问题。
实现代码如下
Pod
'BIModule',:svn=>'http://192.168.89.31/subversion/dingdang/mobile/ios/PodSVN/WFTabbarPod/BIModule',:tag=>'1.0.1'
如图2所示,该组件化平台的结构为:用pod代码管理模块来实现组件仓库SVN与项目之间的沟通。例如,将组件A与组件B放置在由SVN模块构成的组件仓库中,更新也是更新这里的组件。Pod代码管理模块负责将组件A和组件B编译更新至项目A中。
图3给出了实现这种管理方式,需要完成操作的一个示范例。在图3中,SVN模块构成仓库,仓库中存放各种组件。组件通过svn import输入组件仓库后,通过svn tag给组件加上标签。然后根据组件的标签创造出配置文件。标签中可以包括组件的版本信息。这样项目可以选择更新哪个版本的组件,更新哪个版本,这个版本就是所需版本,通常所需版本为最新版本。
xcode项目在workspace中开发,在workspace中还保存有与该项目相关联的podfile说明文件,用来记录该xcode项目中组件的信息。
xcode项目要更新组件的时候,通过pod代码管理模块执行pod install。首先执行podfile说明文件,根据该说明文件中的组件信息,从svn模块中找到待更新组件的配置文件,然后开始执行,根据配置文件找到待更新组件所包含的所有文件,资源和项目配置,再后,将所需版本的组件更新至xcode项目中。在图3中,备注1为:podSpec定义组件的名称,版本,描述,主页,证书类型,作者,平台,代码源地址,源文件路径,资源文件路径,所需静态库,动态库,依赖的其它第三方库等。备注2为:Podfile指定项目的WorkSpace,project,target,组件的路径和版本等。
图4显示了在本发明的基于SVN模块的项目中组件的同步更新系统中,项目通过pod代码管理模块来实现组件更新的结构示意图。
综上,本发明的技术方案能带来至少以下的有益效果:
1、能够减少pod同步仓库配置的时间。
2、能够使组件库或者业务组件放到私有平台,避免核心技术的泄露和业务逻辑的泄露。
3、能够较少维护多套相同或者相似功能的组件,减少代码编写量,也能减少新开发组件引起的问题。
4、功能或者业务组件化之后,能够方便其它第三方项目接入,方便以后项目组件SDK化。
5、组件化能够把每个业务逻辑和模块分离,单独管理,使分工更加明确,提高开发效率。
简言之,本发明至少提供了以下技术启示:
1、组件仓库,在SVN版本控制系统下的建立组件仓库的过程。
2、pod管理系统对于SVN版本控制系统下的管理支持,包含组件仓库文件的配置和更新项目组件的方式。
3、改组件化平台方案对原有Pod管理系统的优化过程,减少了组件同步的时间和过程。
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
Claims (10)
1.基于SVN模块的项目中组件的同步更新方法,其特征在于,包括以下步骤:
将所有组件统一在一个SVN模块中管理,且在SVN模块中记录各组件的更新版本;
各项目通过pod代码管理模块直接调取所用组件在SVN模块中的所需版本以及由pod代码管理模块提供相应配置文件,以完成各项目中组件的同步更新。
2.如权利要求1所述的基于SVN模块的项目中组件的同步更新方法,其特征在于,所述pod代码管理模块中包括Podfile说明文件,用以指定待更新项目的WorkSpace,project,target,以及待更新组件的路径和版本。
3.如权利要求1所述的基于SVN模块的项目中组件的同步更新方法,其特征在于,所述配置文件中包含组件的版本信息,所述项目通过所述配置文件获取组件的所需版本信息。
4.如权利要求1所述的基于SVN模块的项目中组件的同步更新方法,其特征在于,所述组件相应的配置文件也存储在SVN模块中。
5.基于SVN模块的项目中组件的同步更新系统,其特征在于,包括:
SVN模块,用于统一管理所有组件,且在SVN模块中记录各组件的更新版本;
pod代码管理模块:各项目通过pod管理系统直接调取所用组件在SVN模块中的所需版本以及由pod代码管理模块提供相应配置文件,以完成各项目中组件的同步更新。
6.如权利要求5所述的基于SVN模块的项目中组件的同步更新系统,其特征在于,所述pod代码管理模块中包括Podfile说明文件,用以指定待更新项目的WorkSpace,project,target,以及待更新组件的路径和版本。
7.如权利要求5所述的基于SVN模块的项目中组件的同步更新系统,其特征在于,所述配置文件中包含组件的版本信息,所述项目通过所述配置文件获取组件的所需版本信息。
8.如权利要求5所述的基于SVN模块的项目中组件的同步更新系统,其特征在于,所述组件相应的配置文件也存储在SVN模块中。
9.电子设备,其特征在于,至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1-4中任一项所述的方法。
10.存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911173447.8A CN111142895B (zh) | 2019-11-26 | 2019-11-26 | 基于svn模块的项目中组件的同步更新方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911173447.8A CN111142895B (zh) | 2019-11-26 | 2019-11-26 | 基于svn模块的项目中组件的同步更新方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111142895A true CN111142895A (zh) | 2020-05-12 |
CN111142895B CN111142895B (zh) | 2021-10-15 |
Family
ID=70517232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911173447.8A Active CN111142895B (zh) | 2019-11-26 | 2019-11-26 | 基于svn模块的项目中组件的同步更新方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111142895B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256247A (zh) * | 2020-10-09 | 2021-01-22 | 北京字跳网络技术有限公司 | 模块组件的依赖处理方法、装置、计算机设备及存储介质 |
CN114153480A (zh) * | 2021-12-06 | 2022-03-08 | 北京金堤科技有限公司 | 代码同步、组件发布方法及其装置、计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201481A (zh) * | 2016-06-30 | 2016-12-07 | 传线网络科技(上海)有限公司 | 应用程序开发系统中的组件管理方法和装置 |
CN107391968A (zh) * | 2017-08-18 | 2017-11-24 | 武汉斗鱼网络科技有限公司 | 一种实现私有pod发布权限控制的方法及装置 |
CN108255495A (zh) * | 2018-01-31 | 2018-07-06 | 中国银行股份有限公司 | 一种基于Mediator的组件化方法及系统 |
CN109284126A (zh) * | 2018-09-27 | 2019-01-29 | 江苏满运软件科技有限公司 | 类库自动更新方法、装置、电子设备、存储介质 |
CN109857449A (zh) * | 2019-01-17 | 2019-06-07 | 平安城市建设科技(深圳)有限公司 | 基于内网的代码管理方法、装置、终端及可读存储介质 |
-
2019
- 2019-11-26 CN CN201911173447.8A patent/CN111142895B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201481A (zh) * | 2016-06-30 | 2016-12-07 | 传线网络科技(上海)有限公司 | 应用程序开发系统中的组件管理方法和装置 |
CN107391968A (zh) * | 2017-08-18 | 2017-11-24 | 武汉斗鱼网络科技有限公司 | 一种实现私有pod发布权限控制的方法及装置 |
CN108255495A (zh) * | 2018-01-31 | 2018-07-06 | 中国银行股份有限公司 | 一种基于Mediator的组件化方法及系统 |
CN109284126A (zh) * | 2018-09-27 | 2019-01-29 | 江苏满运软件科技有限公司 | 类库自动更新方法、装置、电子设备、存储介质 |
CN109857449A (zh) * | 2019-01-17 | 2019-06-07 | 平安城市建设科技(深圳)有限公司 | 基于内网的代码管理方法、装置、终端及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
HOWIE-CH: "基于 svn 服务器及cocoapods-repo-svn插件进行组件化私有库的创建", 《HTTPS://WWW.CNBLOGS.COM/HOWIE-CH/P/7140678.HTML》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256247A (zh) * | 2020-10-09 | 2021-01-22 | 北京字跳网络技术有限公司 | 模块组件的依赖处理方法、装置、计算机设备及存储介质 |
CN114153480A (zh) * | 2021-12-06 | 2022-03-08 | 北京金堤科技有限公司 | 代码同步、组件发布方法及其装置、计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111142895B (zh) | 2021-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100449524C (zh) | 维护基于组件的软件产品 | |
CN109739523B (zh) | 应用程序打包方法、装置、存储介质及终端 | |
CN102622241B (zh) | 一种软件升级方法及装置 | |
US8255362B2 (en) | Methods, systems, and computer program products for provisioning software using local changesets that represent differences between software on a repository and a local system | |
US10127218B2 (en) | Object templates for data-driven applications | |
US20060288055A1 (en) | Methods, systems, and computer program products for provisioning software via a networked file repository in which a parent branch has a shadow associated therewith | |
CN111142895B (zh) | 基于svn模块的项目中组件的同步更新方法和系统 | |
CN107483241B (zh) | 一种在网元升级过程中下载升级镜像版本的方法和装置 | |
CN109542459A (zh) | 应用程序打包方法及装置、计算机装置及计算机存储介质 | |
CN105045631A (zh) | 一种升级客户端侧应用程序的方法和装置 | |
CN109284126B (zh) | 类库自动更新方法、装置、电子设备、存储介质 | |
CN111352653A (zh) | 基于PaaS云平台服务器的系统开发方法及服务器 | |
CN110389766A (zh) | HBase容器集群部署方法、系统、设备及计算机可读存储介质 | |
CN102193841B (zh) | 一种Subversion配置库的备份方法及装置 | |
CN103761612A (zh) | 项目发布方法及系统 | |
CN107844300A (zh) | 脚本处理方法及系统 | |
CN105354073A (zh) | 一种基于安卓系统的单机应用网络化方法和系统 | |
CN108376082B (zh) | 一种引用库版本更新方法和系统 | |
CN102981942A (zh) | 一种任务处理方法和系统 | |
CN113296828A (zh) | 一种发布应用的方法、服务器和系统 | |
CN111796851A (zh) | 客户端基础库更新方法、装置、电子设备和存储介质 | |
CN110647326A (zh) | 基于NuGet程序包的软件复用方法、装置及系统 | |
CN112084254A (zh) | 一种数据同步方法和系统 | |
CN113821228B (zh) | 一种基于分层容器镜像构建ros或类ros项目的方法 | |
KR20150007146A (ko) | 소프트웨어 배포 방법 및 이를 수행하는 소프트웨어 배포 서버 |
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 |