CN109144548A - 一种基于git实现的多组件软件升级方法、装置及服务器 - Google Patents
一种基于git实现的多组件软件升级方法、装置及服务器 Download PDFInfo
- Publication number
- CN109144548A CN109144548A CN201810985438.8A CN201810985438A CN109144548A CN 109144548 A CN109144548 A CN 109144548A CN 201810985438 A CN201810985438 A CN 201810985438A CN 109144548 A CN109144548 A CN 109144548A
- Authority
- CN
- China
- Prior art keywords
- software
- version
- file
- difference packet
- edition
- 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.)
- Pending
Links
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
本发明提供了一种基于git实现的多组件软件升级方法、装置及服务器,涉及软件升级技术领域,该方法由服务器执行,该方法包括:采用git提交文件操作向测试仓库的文件夹内添加第一版本软件的文件和第一版本软件的版本信息;判断第一版本软件是否有新版本;如果是,将测试仓库的第一版本软件的文件和第一版本软件的版本信息删除,并将第二版本软件的文件和第二版本软件的版本信息添加到测试仓库;确定第一版本软件和第二版本软件的差异包;将差异包推送到中心仓库和发布仓库,以供用户基于差异包完成软件升级。本发明基于git实现多组件软件的升级,能够有效降低软件升级的成本和出错率。
Description
技术领域
本发明涉及软件升级技术领域,尤其是涉及一种基于git实现的多组件软件升级方法、装置及服务器。
背景技术
在web系统领域,一个复杂的web应用可能由很多个组件构成,随着版本的推进,组件的升级和维护成了一道难题。如果采用各个组件独立升级的方式,势必会带来版本依赖问题,增加了维护成本。关于多组件升级问题,传统的解决方法是使用不同版本的全量应用包,人工对比差异文件,生成差异包(由多个差异文件组成的压缩包或其他形式的包),然后通过差异包对多组件软件升级。现有的多组件软件升级方法中,当全量包过大时,差异文件对比会是一个漫长的过程,存在时间成本和人力成本较高、升级容易出错的问题。
发明内容
有鉴于此,本发明的目的在于提供一种基于git实现的多组件软件升级方法、装置及服务器,能够有效降低软件升级的成本和出错率。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种基于git实现的多组件软件升级方法,该方法由服务器执行,其中,服务器上创建有中心仓库、测试仓库和发布仓库;中心仓库分别与测试仓库和发布仓库相关联,中心仓库包括git仓库;该方法包括:采用git提交文件操作向测试仓库的文件夹内添加第一版本软件的文件和第一版本软件的版本信息;其中,版本信息包括git标签;判断第一版本软件是否有新版本;如果是,将测试仓库的第一版本软件的文件和第一版本软件的版本信息删除,并将第二版本软件的文件和第二版本软件的版本信息添加到测试仓库;确定第一版本软件和第二版本软件的差异包;其中,差异包包括第一版本软件的文件和第二版本软件的文件之间的差异文件;将差异包推送到中心仓库和发布仓库,以供用户基于差异包完成软件升级。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,确定第一版本软件和第二版本软件的差异包的步骤,包括:获取git提交文件操作产生的git日志;根据git日志生成第一版本软件和第二版本软件的差异包。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,差异包还包括升级脚本和meta文件;确定第一版本软件和第二版本软件的差异包的步骤,包括:对比第一版本软件的文件和第二版本软件的文件,确定第一版本软件和第二版本软件之间的差异文件;获取差异文件对应的升级脚本和meta文件;其中,meta文件包括第一版本软件的文件路径、第二版本软件的文件路径和删除文件的路径。将差异文件、升级脚本和meta文件打包生成差异包。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,服务器上设置有测试版本管理服务和发布版本管理服务;将差异包推送到中心仓库和发布仓库的步骤,包括:从测试版本管理服务中下载差异包,将下载的差异包推送到中心仓库;通过发布版本管理服务将中心仓库中的差异包推送至发布仓库。
结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,将下载的差异包推送到中心仓库的步骤,包括:判断差异包是否合法;如果是,将差异包推送到中心仓库。
结合第一方面的第四种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,上述方法还包括:若差异包非法,删除测试仓库中的第二版本软件的版本信息,并重新向测试仓库中添加第二版本软件的文件和版本信息。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,其中,上述方法还包括:根据meta文件的内容,通过升级脚本对第一版本软件的文件进行删除操作,并对第二版本软件的文件进行替换操作,以将第一版本软件的文件替换为第二版本软件的文件。
第二方面,本发明实施例还提供一种基于git实现的多组件软件升级装置,包括:添加模块,用于采用git提交文件操作向测试仓库的文件夹内添加第一版本软件的文件和第一版本软件的版本信息;其中,版本信息包括git标签;判断模块,用于判断第一版本软件是否有新版本;删除模块,用于如果第一版本软件有新版本,将测试仓库的第一版本软件的文件和第一版本软件的版本信息删除,并将第二版本软件的文件和第二版本软件的版本信息添加到测试仓库;确定模块,用于确定第一版本软件和第二版本软件的差异包;其中,差异包包括第一版本软件的文件和第二版本软件的文件之间的差异文件;推送模块,用于将差异包推送到中心仓库和发布仓库,以供用户基于差异包完成软件升级。
第三方面,本发明实施例提供了一种服务器,包括处理器和存储器;存储器上存储有计算机程序,计算机程序在被处理器运行时执行如第一方面至第一方面的第六种可能的实施方式任一项的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述第一方面至第一方面的第六种可能的实施方式任一项的方法的步骤。
本发明实施例提供了一种基于git实现的多组件软件升级方法、装置及服务器,通过git提交文件操作向测试仓库的文件夹内添加第一版本软件的文件和第一版本软件的版本信息,并判断第一版本软件是否有新版本,如果是,将测试仓库的第一版本软件的文件和第一版本软件的版本信息删除,并将第二版本软件的文件和第二版本软件的版本信息添加到测试仓库,从而确定第一版本软件和第二版本软件的差异包,并将差异包推送到中心仓库和发布仓库,以供用户基于差异包完成软件升级。本发明实施例基于git实现多组件软件的升级,代替人工对比差异文件生成差异包从而对软件进行升级,能够有效降低软件升级的成本和出错率。
本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例所提供的一种基于git实现的多组件软件升级方法的流程图;
图2示出了本发明实施例所提供的另一种基于git实现的多组件软件升级方法的流程图;
图3示出了本发明实施例所提供的一种的软件升级的组成部分的结构框图;
图4示出了本发明实施例所提供的另一种基于git实现的多组件软件升级方法的流程图;
图5示出了本发明实施例所提供的一种基于git实现的多组件软件升级装置的结构框图;
图6示出了本发明实施例所提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到现有技术中的软件升级方法需要通过人工对比差异文件生成差异包,从而造成软件升级的成本较高以及出错率较高,本发明实施例提供了一种基于git实现的多组件软件升级方法、装置及服务器,能够有效降低软件升级的成本和出错率,以下对本发明实施例进行详细介绍。
参见图1所示的一种基于git实现的多组件软件升级方法的流程图,该方法可以服务器执行,服务器上创建有中心仓库、测试仓库和发布仓库,中心仓库分别与测试仓库和发布仓库相关联,中心仓库包括git仓库,该方法包括以下步骤:
步骤S102,采用git提交文件操作向测试仓库的文件夹内添加第一版本软件的文件和第一版本软件的版本信息;其中,版本信息包括git标签。
服务器可以是服务器集群,在服务器集群中的一台服务器上建立git仓库作为中心仓库,并在服务器集群中的其它任意服务器上创建测试仓库和发布仓库,并执行gitclone(从中心仓库克隆)操作,将测试仓库以及发布仓库分别与中心仓库关联起来。Git是一个开源的分布式版本控制系统,可以有效、高速的处理不同大小的项目版本管理,能够应用到很多自由软件项目,git提交文件操作即git commit操作,将第一版本软件的文件和第一版本软件的版本信息添加到测试仓库,git标签可以作为版本信息,包括版本号和版本说明等。
步骤S104,判断第一版本软件是否有新版本。如果是,执行步骤S106;如果否,则结束。
可以是服务器定时对第一版本软件进行查看,并判断软件是否有新版本,软件的新版本可以是专业人员通过服务器操作完成的。
步骤S106,将测试仓库的第一版本软件的文件和第一版本软件的版本信息删除,并将第二版本软件的文件和第二版本软件的版本信息添加到测试仓库。
测试仓库中添加第二版本软件的文件前,第一版本软件的文件和第一版本软件的版本信息已完全删除,没有第一版本软件的痕迹。
步骤S108,确定第一版本软件和第二版本软件的差异包;其中,差异包包括第一版本软件的文件和第二版本软件的文件之间的差异文件。
差异包还包括差异文件对应的升级脚本和meta文件,meta文件包括第一版本软件的文件路径、第二版本软件的文件路径和删除文件的路径,差异文件以及差异文件对应的升级脚本和meta文件打包生成差异包。
步骤S110,将差异包推送到中心仓库和发布仓库,以供用户基于差异包完成软件升级。
除将差异包推送到中心仓库和发布仓库外,还可以将第二版本软件的文件和第二版本软件的版本信息推送到中心仓库和发布仓库,根据差异包,用户可以完成软件的升级,如用户下载了第一版本的软件,包括安装包和其它文件,然后下载差异包,根据下载的差异包即可完成第一版本软件的更新,生成第二版本的软件。
本发明实施例提供的上述基于git实现的多组件软件升级方法,通过git提交文件操作向测试仓库的文件夹内添加第一版本软件的文件和第一版本软件的版本信息,并判断第一版本软件是否有新版本,如果是,将测试仓库的第一版本软件的文件和第一版本软件的版本信息删除,并将第二版本软件的文件和第二版本软件的版本信息添加到测试仓库,从而确定第一版本软件和第二版本软件的差异包,并将差异包推送到中心仓库和发布仓库,以供用户基于差异包完成软件升级。本发明实施例基于git实现多组件软件的升级,代替人工对比差异文件生成差异包从而对软件进行升级,能够有效降低软件升级的成本和出错率。
为便于理解,以下给出基于本实施例提供的基于git实现的多组件软件升级方法的一种具体实施方式,参见图2所示的另一种基于git实现的多组件软件升级方法的流程图,该方法包括以下步骤:
步骤S202,采用git提交文件操作向测试仓库的文件夹内添加第一版本软件的文件和第一版本软件的版本信息;其中,版本信息包括git标签。
服务器上除建立的测试仓库、中心仓库和发布仓库外,还设置有测试版本管理服务和发布版本管理服务,如图3所示的软件升级的组成部分的结构框图。中心仓库是用于接收测试仓库push(推送)的文件和版本信息,并且发布仓库可以从中心仓库pull(更新)文件和版本信息。版本管理服务可以根据git log(提交日志)来分析任意两个不同版本之间的文件差异,并生成差异包。
步骤S204,判断第一版本软件是否有新版本。如果是,执行步骤S206;如果否,则结束。
步骤S206,将测试仓库的第一版本软件的文件和第一版本软件的版本信息删除,并将第二版本软件的文件和第二版本软件的版本信息添加到测试仓库。
步骤S208,获取git提交文件操作产生的git日志。
git日志包括git提交文件操作的对应文件信息,如向测试仓库添加第一版本软件的文件时,git日志中会包含第一版本软件的文件,向测试仓库添加第二版本软件的文件时,git日志中又会包含第二版本软件的文件。
步骤S210,根据git日志生成第一版本软件和第二版本软件的差异包。
根据git日志中包含的第一版本软件的文件和第二版本软件的文件,对比两个不同版本软件的文件存在差异的文件,从而生成差异包。
在一种实施方式中,差异包还包括升级脚本和meta文件,确定第一版本软件和第二版本软件的差异包的具体步骤如下:
(1)对比第一版本软件的文件和第二版本软件的文件,确定第一版本软件和第二版本软件之间的差异文件。
通过对比两个不同版本软件的文件得到差异文件,即两个版本软件的文件存在不同的文件。
(2)获取差异文件对应的升级脚本和meta文件;其中,meta文件包括第一版本软件的文件路径、第二版本软件的文件路径和删除文件的路径。
文件路径是指寻找文件时,所历经的文件夹线路,如第一版本软件的文件存放在A文件夹的A1文件夹中,则文件路径是从A文件夹到A1文件夹。
(3)将差异文件、升级脚本和meta文件打包生成差异包。
根据meta文件的内容,通过升级脚本对第一版本软件的文件进行删除操作,并对第二版本软件的文件进行替换操作,以将第一版本软件的文件替换为第二版本软件的文件。
步骤S212,从测试版本管理服务中下载差异包。
测试版本服务会通过测试仓库分析不同版本软件的文件存在的差异,获得差异包。
步骤S214,判断差异包是否合法。如果是,执行步骤S216;如果否,执行步骤S220。
根据测试仓库中添加的第二版本软件的文件和第二版本软件的版本信息,判断差异包所包含的信息是否为第一版本软件和第二版本软件之间存在的差异信息。
步骤S216,将差异包推送到中心仓库。
由于中心仓库和测试仓库有关联关系,采用push(推送)技术的建立有测试仓库的服务器将差异包推送给建立有中心仓库的服务器,并能够推送到中心仓库,这个推送过程是不间断的。在建立有测试仓库的服务器上确定差异包到将差异包推送到中心仓库的时间延迟很小,服务器之间几乎可以实现同步,确定差异包之后可以及时将差异包由测试仓库推送到中心仓库。
步骤S218,通过发布版本管理服务将中心仓库中的差异包推送至发布仓库。
由于中心仓库和发布仓库有关联关系,建立有中心仓库的服务器可以通过发布版本服务将中心仓库的差异包推送到建立有发布仓库的服务器,并推送到发布仓库,以供用户基于差异包完成软件升级。
步骤S220,删除测试仓库中的第二版本软件的版本信息,并重新向测试仓库中添加第二版本软件的文件和版本信息。
如果差异包非法,说明可能在向测试仓库添加第二版本软件的版本信息时出现添加错误问题,因此需将测试仓库中的第二版本软件的版本信息删除,重新添加第二版本软件的文件和版本信息。
本发明实施例提供的上述基于git实现的多组件软件升级方法,根据git日志生成第一版本软件和第二版本软件的差异包,并判断差异包的合法性,如果合法将差异包推送到中心仓库和发布仓库,以供用户基于差异包完成软件升级。本发明实施例基于git实现多组件软件的升级,代替人工对比差异文件生成差异包从而对软件进行升级,能够有效降低软件升级的成本和出错率。
在图2的基础上,以下给出基于本实施例提供的基于git实现的多组件软件升级方法的另一种具体实施方式,参见图4所示的另一种基于git实现的多组件软件升级方法的流程图,该方法包括以下步骤:
步骤S402,创建中心仓库。
在服务器集群中的一台服务器上建立git仓库作为中心仓库,并在服务器集群中的其它任意服务器上创建测试仓库和发布仓库,并执行git clone(从中心仓库克隆)操作,将测试仓库和发布仓库分别与中心仓库关联起来。
步骤S404,初始化测试仓库。
即向该仓库文件夹内添加软件对应的版本文件,如向测试仓库文件夹内添加第一版本软件的文件。
步骤S406,执行git commit(提交文件)操作和git tag(标签)操作。
使用git tag(标签)来添加版本信息,如使用git tag添加第一版本软件的版本信息,版本信息包括版本号和版本说明等。
步骤S408,判断是否有新版本。如果是,执行步骤S410;如果否,执行步骤S412。
步骤S410,将测试仓库的所有文件全部删除,并把新版本的所有文件加入到测试仓库,然后执行步骤S406的操作。
有新版本时,执行步骤S406的git commit操作和git tag操作,通过git commit操作添加新版本软件的文件,通过git tag操作添加新版本软件的版本信息。
测试版本管理服务可以根据两次提交的版本信息对比出两个版本的差异文件,并生成差异包,提供给用户下载,差异包内除了包含差异文件外,还包含升级脚本以及meta文件,meta文件中记录了本次升级的差异,包括新建的文件,修改的文件,删除的文件的路径,升级脚本是在应用升级过程中执行的,它会根据meta文件的相关记录,对新建和修改的文件进行替换,对删除的文件进行删除。
步骤S412,将测试仓库的内容推送到中心仓库。
在测试版本管理服务中下载差异包,可在测试环境中测试差异包是否正确。如果差异包有误,可以先删除步骤S410中生成的git tag,然后重新执行步骤S410。如果确认差异包无误,则可以将测试仓库的内容即测试仓库中包含的文件push(推送)到中心仓库。
步骤S414,发布版本管理服务自动将中心仓库的内容更新到发布仓库。
步骤S416,发布版本管理服务可以生成相关差异包,以供用户下载。
步骤S418,根据差异包,完成软件升级。
综上所述,本发明实施例提供的上述基于git实现的多组件软件升级方法,通过执行git commit操作和git tag操作确定软件升级的差异包,以供用户通过差异包完成软件的升级。本发明实施例基于git实现多组件软件的升级,代替人工对比差异文件生成差异包从而对软件进行升级,能够有效降低软件升级的成本和出错率。
对应于前述基于git实现的多组件软件升级方法,本发明实施例提供了一种基于git实现的多组件软件升级装置,参见图5示出的一种基于git实现的多组件软件升级装置的结构框图,该装置包括以下模块:
添加模块502,用于采用git提交文件操作向测试仓库的文件夹内添加第一版本软件的文件和第一版本软件的版本信息;其中,版本信息包括git标签;
判断模块504,用于判断第一版本软件是否有新版本;
删除模块506,用于如果第一版本软件有新版本,将测试仓库的第一版本软件的文件和第一版本软件的版本信息删除,并将第二版本软件的文件和第二版本软件的版本信息添加到测试仓库;
确定模块508,用于确定第一版本软件和第二版本软件的差异包;其中,差异包包括第一版本软件的文件和第二版本软件的文件之间的差异文件;
推送模块510,用于将差异包推送到中心仓库和发布仓库,以供用户基于差异包完成软件升级。
本发明实施例提供的上述基于git实现的多组件软件升级装置,通过git提交文件操作向测试仓库的文件夹内添加第一版本软件的文件和第一版本软件的版本信息,并判断第一版本软件是否有新版本,如果是,将测试仓库的第一版本软件的文件和第一版本软件的版本信息删除,并将第二版本软件的文件和第二版本软件的版本信息添加到测试仓库,从而确定第一版本软件和第二版本软件的差异包,并将差异包推送到中心仓库和发布仓库,以供用户基于差异包完成软件升级。本发明实施例基于git实现多组件软件的升级,代替人工对比差异文件生成差异包从而对软件进行升级,能够有效降低软件升级的成本和出错率。
上述确定模块508进一步用于:获取git提交文件操作产生的git日志;根据git日志生成第一版本软件和第二版本软件的差异包。
在一种实施方式中,差异包还包括升级脚本和meta文件,上述确定模块508还用于:对比第一版本软件的文件和第二版本软件的文件,确定第一版本软件和第二版本软件之间的差异文件;获取差异文件对应的升级脚本和meta文件;其中,meta文件包括第一版本软件的文件路径、第二版本软件的文件路径和删除文件的路径;将所述差异文件、所述升级脚本和所述meta文件打包生成差异包。
本实施例所提供的装置,其实现原理及产生的技术效果和前述实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例提供了一种服务器,参见图6所示的一种服务器的结构示意图,该服务器包括:处理器60、存储器61、总线62和通信接口63,所述处理器60、通信接口63和存储器61通过总线62连接;处理器60用于执行存储器61中存储的可执行模块,例如计算机程序。
其中,存储器61可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口63(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线62可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器61用于存储程序,所述处理器60在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器60中,或者由处理器60实现。
处理器60可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器60中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器60可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器61,处理器60读取存储器61中的信息,结合其硬件完成上述方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行前述实施例任一项的方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统具体工作过程,可以参考前述实施例中的对应过程,在此不再赘述。
本发明实施例所提供的基于git实现的多组件软件升级方法、装置及服务器的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种基于git实现的多组件软件升级方法,其特征在于,所述方法由服务器执行,其中,所述服务器上创建有中心仓库、测试仓库和发布仓库;所述中心仓库分别与所述测试仓库和所述发布仓库相关联,所述中心仓库包括git仓库;所述方法包括:
采用git提交文件操作向所述测试仓库的文件夹内添加第一版本软件的文件和所述第一版本软件的版本信息;其中,所述版本信息包括git标签;
判断所述第一版本软件是否有新版本;
如果是,将所述测试仓库的所述第一版本软件的文件和所述第一版本软件的版本信息删除,并将第二版本软件的文件和所述第二版本软件的版本信息添加到所述测试仓库;
确定所述第一版本软件和所述第二版本软件的差异包;其中,所述差异包包括所述第一版本软件的文件和所述第二版本软件的文件之间的差异文件;
将所述差异包推送到所述中心仓库和所述发布仓库,以供用户基于所述差异包完成软件升级。
2.根据权利要求1所述的方法,其特征在于,所述确定所述第一版本软件和所述第二版本软件的差异包的步骤,包括:
获取所述git提交文件操作产生的git日志;
根据所述git日志生成所述第一版本软件和所述第二版本软件的差异包。
3.根据权利要求1所述的方法,其特征在于,所述差异包还包括升级脚本和meta文件;所述确定所述第一版本软件和所述第二版本软件的差异包的步骤,包括:
对比所述第一版本软件的文件和所述第二版本软件的文件,确定所述第一版本软件和所述第二版本软件之间的差异文件;
获取所述差异文件对应的升级脚本和meta文件;其中,所述meta文件包括所述第一版本软件的文件路径、所述第二版本软件的文件路径和删除文件的路径;
将所述差异文件、所述升级脚本和所述meta文件打包生成差异包。
4.根据权利要求1所述的方法,其特征在于,所述服务器上设置有测试版本管理服务和发布版本管理服务;
所述将所述差异包推送到所述中心仓库和所述发布仓库的步骤,包括:
从所述测试版本管理服务中下载所述差异包,将下载的所述差异包推送到所述中心仓库;
通过所述发布版本管理服务将所述中心仓库中的差异包推送至所述发布仓库。
5.根据权利要求4所述的方法,其特征在于,所述将下载的所述差异包推送到所述中心仓库的步骤,包括:
判断所述差异包是否合法;
如果是,将所述差异包推送到所述中心仓库。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述差异包非法,删除所述测试仓库中的所述第二版本软件的版本信息,并重新向所述测试仓库中添加第二版本软件的文件和版本信息。
7.根据权利要求3所述的方法,其特征在于,所述方法还包括:
根据所述meta文件的内容,通过所述升级脚本对所述第一版本软件的文件进行删除操作,并对所述第二版本软件的文件进行替换操作,以将所述第一版本软件的文件替换为所述第二版本软件的文件。
8.一种基于git实现的多组件软件升级装置,其特征在于,包括:
添加模块,用于采用git提交文件操作向所述测试仓库的文件夹内添加第一版本软件的文件和所述第一版本软件的版本信息;其中,所述版本信息包括git标签;
判断模块,用于判断所述第一版本软件是否有新版本;
删除模块,用于如果所述第一版本软件有新版本,将所述测试仓库的所述第一版本软件的文件和所述第一版本软件的版本信息删除,并将第二版本软件的文件和所述第二版本软件的版本信息添加到所述测试仓库;
确定模块,用于确定所述第一版本软件和所述第二版本软件的差异包;其中,所述差异包包括所述第一版本软件的文件和所述第二版本软件的文件之间的差异文件;
推送模块,用于将所述差异包推送到所述中心仓库和所述发布仓库,以供用户基于所述差异包完成软件升级。
9.一种服务器,其特征在于,包括处理器和存储器;
所述存储器上存储有计算机程序,所述计算机程序在被所述处理器运行时执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1至7任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810985438.8A CN109144548A (zh) | 2018-08-27 | 2018-08-27 | 一种基于git实现的多组件软件升级方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810985438.8A CN109144548A (zh) | 2018-08-27 | 2018-08-27 | 一种基于git实现的多组件软件升级方法、装置及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109144548A true CN109144548A (zh) | 2019-01-04 |
Family
ID=64828367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810985438.8A Pending CN109144548A (zh) | 2018-08-27 | 2018-08-27 | 一种基于git实现的多组件软件升级方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109144548A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096289A (zh) * | 2019-06-28 | 2019-08-06 | 奥特酷智能科技(南京)有限公司 | 自动驾驶异构平台开发环境的快速部署方法 |
CN110321254A (zh) * | 2019-07-09 | 2019-10-11 | 西安点告网络科技有限公司 | 软件版本回滚方法、装置、服务器及存储介质 |
CN110378082A (zh) * | 2019-07-24 | 2019-10-25 | 湖南国科微电子股份有限公司 | 软件安全开发方法及系统 |
CN110990035A (zh) * | 2019-11-01 | 2020-04-10 | 中国人民解放军63811部队 | 一种基于Git的链式软件升级方法 |
CN110990037A (zh) * | 2019-11-26 | 2020-04-10 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 板卡软件升级方法及装置 |
CN111240767A (zh) * | 2020-02-04 | 2020-06-05 | 北京字节跳动网络技术有限公司 | 组件和页面加载方法、装置、电子设备及存储介质 |
CN111666081A (zh) * | 2020-04-30 | 2020-09-15 | 平安科技(深圳)有限公司 | 基于Git的项目版本发布方法、装置、设备及介质 |
CN111913716A (zh) * | 2020-08-11 | 2020-11-10 | 上海毅博电子商务有限责任公司 | 一种对Java Web应用的增量部署方法 |
CN111930411A (zh) * | 2020-09-30 | 2020-11-13 | 腾讯科技(深圳)有限公司 | 代码升级方法、装置、计算机设备和存储介质 |
CN113127022A (zh) * | 2019-12-31 | 2021-07-16 | 深圳Tcl新技术有限公司 | 一种代码的自动更新方法及装置、计算机设备、存储介质 |
CN115269444A (zh) * | 2022-09-30 | 2022-11-01 | 平安银行股份有限公司 | 代码静态检测方法、装置及服务器 |
CN117573564A (zh) * | 2024-01-15 | 2024-02-20 | 智业软件股份有限公司 | 一种基于gitlab代码提交日志自动识别差异的方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104504102A (zh) * | 2014-12-26 | 2015-04-08 | 携程计算机技术(上海)有限公司 | 图片版本管理系统及方法 |
CN104899047A (zh) * | 2015-06-25 | 2015-09-09 | 广州杰赛科技股份有限公司 | 网页框架部署方法和系统 |
CN105653287A (zh) * | 2015-12-31 | 2016-06-08 | 北京元心科技有限公司 | 一种程序自动版本发布方法和装置 |
CN106201577A (zh) * | 2016-06-27 | 2016-12-07 | 竞技世界(北京)网络技术有限公司 | 一种更新Lua文件的方法及装置 |
CN106502746A (zh) * | 2016-11-02 | 2017-03-15 | 网易(杭州)网络有限公司 | 应用程序的打包方法及装置 |
CN107315689A (zh) * | 2017-07-04 | 2017-11-03 | 上海爱数信息技术股份有限公司 | 基于Git代码文件检索粒度的自动化回归测试方法 |
CN107908421A (zh) * | 2017-09-29 | 2018-04-13 | 北京创鑫旅程网络技术有限公司 | 软件代码版本管理与发布的方法及装置 |
-
2018
- 2018-08-27 CN CN201810985438.8A patent/CN109144548A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104504102A (zh) * | 2014-12-26 | 2015-04-08 | 携程计算机技术(上海)有限公司 | 图片版本管理系统及方法 |
CN104899047A (zh) * | 2015-06-25 | 2015-09-09 | 广州杰赛科技股份有限公司 | 网页框架部署方法和系统 |
CN105653287A (zh) * | 2015-12-31 | 2016-06-08 | 北京元心科技有限公司 | 一种程序自动版本发布方法和装置 |
CN106201577A (zh) * | 2016-06-27 | 2016-12-07 | 竞技世界(北京)网络技术有限公司 | 一种更新Lua文件的方法及装置 |
CN106502746A (zh) * | 2016-11-02 | 2017-03-15 | 网易(杭州)网络有限公司 | 应用程序的打包方法及装置 |
CN107315689A (zh) * | 2017-07-04 | 2017-11-03 | 上海爱数信息技术股份有限公司 | 基于Git代码文件检索粒度的自动化回归测试方法 |
CN107908421A (zh) * | 2017-09-29 | 2018-04-13 | 北京创鑫旅程网络技术有限公司 | 软件代码版本管理与发布的方法及装置 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096289A (zh) * | 2019-06-28 | 2019-08-06 | 奥特酷智能科技(南京)有限公司 | 自动驾驶异构平台开发环境的快速部署方法 |
CN110321254A (zh) * | 2019-07-09 | 2019-10-11 | 西安点告网络科技有限公司 | 软件版本回滚方法、装置、服务器及存储介质 |
CN110321254B (zh) * | 2019-07-09 | 2021-09-17 | 西安点告网络科技有限公司 | 软件版本回滚方法、装置、服务器及存储介质 |
CN110378082A (zh) * | 2019-07-24 | 2019-10-25 | 湖南国科微电子股份有限公司 | 软件安全开发方法及系统 |
CN110990035A (zh) * | 2019-11-01 | 2020-04-10 | 中国人民解放军63811部队 | 一种基于Git的链式软件升级方法 |
CN110990037A (zh) * | 2019-11-26 | 2020-04-10 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 板卡软件升级方法及装置 |
CN113127022A (zh) * | 2019-12-31 | 2021-07-16 | 深圳Tcl新技术有限公司 | 一种代码的自动更新方法及装置、计算机设备、存储介质 |
CN111240767A (zh) * | 2020-02-04 | 2020-06-05 | 北京字节跳动网络技术有限公司 | 组件和页面加载方法、装置、电子设备及存储介质 |
WO2021217868A1 (zh) * | 2020-04-30 | 2021-11-04 | 平安科技(深圳)有限公司 | 基于Git的项目版本发布方法、装置、设备及介质 |
CN111666081A (zh) * | 2020-04-30 | 2020-09-15 | 平安科技(深圳)有限公司 | 基于Git的项目版本发布方法、装置、设备及介质 |
CN111666081B (zh) * | 2020-04-30 | 2024-04-05 | 平安科技(深圳)有限公司 | 基于Git的项目版本发布方法、装置、设备及介质 |
CN111913716A (zh) * | 2020-08-11 | 2020-11-10 | 上海毅博电子商务有限责任公司 | 一种对Java Web应用的增量部署方法 |
CN111930411B (zh) * | 2020-09-30 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 代码升级方法、装置、计算机设备和存储介质 |
CN111930411A (zh) * | 2020-09-30 | 2020-11-13 | 腾讯科技(深圳)有限公司 | 代码升级方法、装置、计算机设备和存储介质 |
CN115269444A (zh) * | 2022-09-30 | 2022-11-01 | 平安银行股份有限公司 | 代码静态检测方法、装置及服务器 |
CN117573564A (zh) * | 2024-01-15 | 2024-02-20 | 智业软件股份有限公司 | 一种基于gitlab代码提交日志自动识别差异的方法 |
CN117573564B (zh) * | 2024-01-15 | 2024-03-26 | 智业软件股份有限公司 | 一种基于gitlab代码提交日志自动识别差异的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109144548A (zh) | 一种基于git实现的多组件软件升级方法、装置及服务器 | |
US7984426B2 (en) | Graphical representation of dependencies between changes of source code | |
EP3678346A1 (en) | Blockchain smart contract verification method and apparatus, and storage medium | |
ES2774716T3 (es) | Un método y sistema para modelado de tareas de aplicaciones de teléfono móvil | |
CN112214219B (zh) | 一种组件处理方法、装置、服务器及存储介质 | |
CN106371940A (zh) | 一种程序崩溃解决方法及装置 | |
CN107766236B (zh) | 测试任务自动化管理方法、装置、设备及存储介质 | |
CN107506221A (zh) | 应用程序升级方法、装置及设备 | |
US20110016451A1 (en) | Method and system for generating test cases for a software application | |
CN109284225A (zh) | 一种多人协同开发编程代码的质量检测方法及电子设备 | |
CN108595187A (zh) | 安卓安装包集成软件开发工具包的法、装置及存储介质 | |
CN112799937B (zh) | 基于GitHub自动化检测Maven项目中依赖冲突问题的方法 | |
CN109240936A (zh) | 应用程序的兼容性测试方法、终端设备及介质 | |
CN107391112A (zh) | 一种文件版本检测方法及其专用装置 | |
Calavera et al. | Linux Observability with BPF: Advanced Programming for Performance Analysis and Networking | |
CN112527459B (zh) | 一种基于Kubernetes集群的日志分析方法及装置 | |
US11144840B2 (en) | Completing decision logic to avoid a side effect | |
CN114780138B (zh) | 流场模拟软件代码版本管理方法、装置和存储介质 | |
CN111309586A (zh) | 一种命令测试方法、装置及其存储介质 | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN109634569A (zh) | 基于注解的流程实现方法、装置、设备及可读存储介质 | |
CN113792026B (zh) | 数据库脚本的部署方法、装置及计算机可读存储介质 | |
CN109840103A (zh) | 应用程序容器的更新方法、装置和存储介质 | |
CN106843935A (zh) | 一种自动更新静态文件版本号的方法及系统 | |
US11573779B2 (en) | Creating and upgrading of solutions for deployment in a virtualized computing environment |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190104 |
|
RJ01 | Rejection of invention patent application after publication |