CN111142895B - 基于svn模块的项目中组件的同步更新方法和系统 - Google Patents

基于svn模块的项目中组件的同步更新方法和系统 Download PDF

Info

Publication number
CN111142895B
CN111142895B CN201911173447.8A CN201911173447A CN111142895B CN 111142895 B CN111142895 B CN 111142895B CN 201911173447 A CN201911173447 A CN 201911173447A CN 111142895 B CN111142895 B CN 111142895B
Authority
CN
China
Prior art keywords
component
project
svn
module
components
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.)
Active
Application number
CN201911173447.8A
Other languages
English (en)
Other versions
CN111142895A (zh
Inventor
吴付伟
荣承壮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dingdang Fast Medicine Technology Group Co ltd
Original Assignee
Dingdang Fast Medicine Technology Group Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Dingdang Fast Medicine Technology Group Co ltd filed Critical Dingdang Fast Medicine Technology Group Co ltd
Priority to CN201911173447.8A priority Critical patent/CN111142895B/zh
Publication of CN111142895A publication Critical patent/CN111142895A/zh
Application granted granted Critical
Publication of CN111142895B publication Critical patent/CN111142895B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version 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模块的项目中组件的同步更新方法和系统
技术领域
本发明涉及计算机领域。更具体地,涉及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 (4)

1.基于 SVN模块的项目中组件的同步更新方法,其特征在于,包括以下步骤:
将所有组件统一在一个私有化SVN模块中管理,且在SVN模块中记录各组件的更新版本;
各项目组件化后通过pod代码管理模块直接调取所用组件在SVN模块中的所需版本以及由pod代码管理模块提供相应配置文件,以完成各项目中组件的同步更新;
其中,所述pod代码管理模块中包括Podfile说明文件,用以指定待更新项目的WorkSpace,project,target,以及待更新组件的路径和版本;
所述配置文件中包含组件的版本信息,所述项目通过所述配置文件获取组件的所需版本信息;
所述组件相应的配置文件也存储在SVN模块中;
SVN模块能够管理任何类型的文件,包括程序源码;
所有项目的组件都从SVN模块中下载和维护,组件有变更时,更新SVN模块中相应的组件代码,对组件进行一次更新维护,所有项目均能更新;
SVN模块记录组件的每一次变动,能够把组件恢复到旧的版本,或是浏览组件的变动历史;
pod代码管理模块用于实现组件仓库SVN与项目之间的沟通,负责将各组件编译更新至项目中;
各组件通过svn import输入SVN模块构成的组件仓库后,通过svn tag给组件加上标签,然后根据组件的标签创造出配置文件,标签中包括组件的版本信息,使项目能够选择所需的版本;
xcode项目在workspace中开发,在workspace中保存有与该项目相关联的podfile说明文件,用来记录该xcode项目中组件的信息;xcode项目要更新组件的时候,通过pod代码管理模块执行pod install:首先执行podfile说明文件,根据该说明文件中的组件信息,从svn模块中找到待更新组件的配置文件,然后开始执行,根据配置文件找到待更新组件所包含的所有文件,资源和项目配置,再后,将所需版本的组件更新至xcode项目中。
2.基于 SVN模块的项目中组件的同步更新系统,其特征在于,包括:
私有化SVN模块,用于统一管理所有组件,且在SVN模块中记录各组件的更新版本;
pod代码管理模块:各项目组件化后通过pod代码管理系统直接调取所用组件在SVN模块中的所需版本以及由pod代码管理模块提供相应配置文件,以完成各项目中组件的同步更新;
其中,所述pod代码管理模块中包括Podfile说明文件,用以指定待更新项目的WorkSpace,project,target,以及待更新组件的路径和版本;
所述配置文件中包含组件的版本信息,所述项目通过所述配置文件获取组件的所需版本信息;
所述组件相应的配置文件也存储在SVN模块中;
SVN模块能够管理任何类型的文件,包括程序源码;
所有项目的组件都从SVN模块中下载和维护,组件有变更时,更新SVN模块中相应的组件代码,对组件进行一次更新维护,所有项目均能更新;
SVN模块记录组件的每一次变动,能够把组件恢复到旧的版本,或是浏览组件的变动历史;
pod代码管理模块用于实现组件仓库SVN与项目之间的沟通,负责将各组件编译更新至项目中;
各组件通过svn import输入SVN模块构成的组件仓库后,通过svn tag给组件加上标签,然后根据组件的标签创造出配置文件,标签中包括组件的版本信息,使项目能够选择所需的版本;
xcode项目在workspace中开发,在workspace中保存有与该项目相关联的podfile说明文件,用来记录该xcode项目中组件的信息;xcode项目要更新组件的时候,通过pod代码管理模块执行pod install:首先执行podfile说明文件,根据该说明文件中的组件信息,从svn模块中找到待更新组件的配置文件,然后开始执行,根据配置文件找到待更新组件所包含的所有文件,资源和项目配置,再后,将所需版本的组件更新至xcode项目中。
3.电子设备,其特征在于,至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1所述的方法。
4.存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现权利要求1所述的方法。
CN201911173447.8A 2019-11-26 2019-11-26 基于svn模块的项目中组件的同步更新方法和系统 Active CN111142895B (zh)

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 CN111142895A (zh) 2020-05-12
CN111142895B true 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)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112256247B (zh) * 2020-10-09 2023-07-28 北京字跳网络技术有限公司 模块组件的依赖处理方法、装置、计算机设备及存储介质
CN114153480A (zh) * 2021-12-06 2022-03-08 北京金堤科技有限公司 代码同步、组件发布方法及其装置、计算机存储介质

Citations (2)

* Cited by examiner, † Cited by third party
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发布权限控制的方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108255495A (zh) * 2018-01-31 2018-07-06 中国银行股份有限公司 一种基于Mediator的组件化方法及系统
CN109284126B (zh) * 2018-09-27 2022-06-10 江苏满运软件科技有限公司 类库自动更新方法、装置、电子设备、存储介质
CN109857449A (zh) * 2019-01-17 2019-06-07 平安城市建设科技(深圳)有限公司 基于内网的代码管理方法、装置、终端及可读存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
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发布权限控制的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于 svn 服务器及cocoapods-repo-svn插件进行组件化私有库的创建;HOWIE-CH;《https://www.cnblogs.com/howie-ch/p/7140678.html》;20170709;第1-6页 *

Also Published As

Publication number Publication date
CN111142895A (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
CN100449524C (zh) 维护基于组件的软件产品
CN109739523B (zh) 应用程序打包方法、装置、存储介质及终端
CN102622241B (zh) 一种软件升级方法及装置
US10127218B2 (en) Object templates for data-driven applications
EP2876552A2 (en) Software installation package generation and software installation method, device, and system
US20170168801A1 (en) Version control for customized applications
CN111142895B (zh) 基于svn模块的项目中组件的同步更新方法和系统
CN107483241B (zh) 一种在网元升级过程中下载升级镜像版本的方法和装置
CN109542459A (zh) 应用程序打包方法及装置、计算机装置及计算机存储介质
US20140365436A1 (en) Automated synchronization of client-side database with server-side database over a communications network
CN104778175A (zh) 一种实现异构数据库数据同步的方法及系统
CN109284126B (zh) 类库自动更新方法、装置、电子设备、存储介质
CN111352653A (zh) 基于PaaS云平台服务器的系统开发方法及服务器
CN104407945A (zh) 数据备份的方法、装置及系统
CN110389766A (zh) HBase容器集群部署方法、系统、设备及计算机可读存储介质
CN102193841B (zh) 一种Subversion配置库的备份方法及装置
CN113434158A (zh) 一种大数据组件的自定义管理方法、装置、设备及介质
US11645070B1 (en) Documentation enforcement during compilation
CN107844300A (zh) 脚本处理方法及系统
CN108376082B (zh) 一种引用库版本更新方法和系统
CN102981942A (zh) 一种任务处理方法和系统
CN112084254A (zh) 一种数据同步方法和系统
CN113821228B (zh) 一种基于分层容器镜像构建ros或类ros项目的方法
CN110119279A (zh) 一种应用及其升级的方法和装置
CN114153480A (zh) 代码同步、组件发布方法及其装置、计算机存储介质

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