CN110532016B - 版本管理方法、版本更新方法和版本管理系统 - Google Patents

版本管理方法、版本更新方法和版本管理系统 Download PDF

Info

Publication number
CN110532016B
CN110532016B CN201910760135.0A CN201910760135A CN110532016B CN 110532016 B CN110532016 B CN 110532016B CN 201910760135 A CN201910760135 A CN 201910760135A CN 110532016 B CN110532016 B CN 110532016B
Authority
CN
China
Prior art keywords
version
file
package
client
difference
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
CN201910760135.0A
Other languages
English (en)
Other versions
CN110532016A (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.)
Beijing Cheerbright Technologies Co Ltd
Original Assignee
Beijing Cheerbright Technologies 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 Beijing Cheerbright Technologies Co Ltd filed Critical Beijing Cheerbright Technologies Co Ltd
Priority to CN201910760135.0A priority Critical patent/CN110532016B/zh
Publication of CN110532016A publication Critical patent/CN110532016A/zh
Application granted granted Critical
Publication of CN110532016B publication Critical patent/CN110532016B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

本发明公开了版本管理方法,在计算设备中执行,包括步骤:对当前版本的源代码文件进行编译以生成与所述当前版本相对应的当前版本文件包;将所述当前版本文件包与对应于先前版本的先前版本文件包进行比较,并基于所述比较的结果生成与所述当前版本和先前版本相关联的差异包;以及接收客户端的更新请求,根据所述客户端的当前状态向客户端发送所述当前版本文件包和/或差异包以进行更新。本发明还一并公开了相应的版本更新方法和版本管理系统。本发明的版本管理方法,有利于提高客户端的更新效率,能实现对更新包的统一管理。

Description

版本管理方法、版本更新方法和版本管理系统
技术领域
本发明涉及版本更新技术领域,特别涉及一种版本管理方法、版本更新方法和版本管理系统。
背景技术
目前,随着软件平台的不断扩展,业务功能趋向复杂化,移动应用的开发方式也越来越广泛。移动应用的开发方式包括原生开发、H5开发、混合开发等开发方式。
目前已经出现了一种新的开发方式,这样的开发方式的示例包括React Native等。在这种开发方式中,可以通过诸如JavaScript语言这样的脚本解析语言来编写应用逻辑,并且由可以与底层操作系统兼容的引擎来对该脚本进行解析处理,从而实现快速且高效的应用开发,并有利于节省移动应用开发的时间成本。这样的开发方式能实现快速迭代开发应用,能在保持应用运行状态的情况下热替换新代码。
但是在这种开发方式中,对于版本的发布仅仅提供了一种发布方式,即是通过客户端命令行将原生代码打包成一个脚本文件,再将脚本文件拷入原生项目,最后通过软件开发工具将脚本文件、原生项目打包成原生安装包。这种官方发布方案有以下缺点:
1.原生代码必须打包成原生安装包发布,每次更新都需要重新下载完整的应用安装包,不利于快速迭代更新应用。
2.需在客户端编译代码,构建速度依赖于本地环境的机器配置,研发人员需要在环境的搭建配置和调测方面耗费大量时间和精力,势必会降低业务开发效率,而且难以保证本地构建环境的完全同步。
3.需将全部代码打包生成一个脚本文件,导致脚本文件体积较大,不利于网络传输,且影响加载性能。
4.无法权限控制,即无法做到指定客户端更新与其本地版本相对应的脚本文件。
为此,需要一种版本管理方法来解决上述版本发布方式中存在的问题。
本发明解决的是基于React Native开发的应用的云编译和热更新问题。
发明内容
为此,本发明提供一种新的版本管理方法、版本更新方法和版本管理系统,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种版本管理方法,在计算设备中执行,包括步骤:对当前版本的源代码文件进行编译以生成与所述当前版本相对应的当前版本文件包;将所述当前版本文件包与对应于先前版本的先前版本文件包进行比较,并基于所述比较的结果生成与所述当前版本和先前版本相关联的差异包;以及接收客户端的更新请求,根据所述客户端的当前状态向客户端发送所述当前版本文件包和/或差异包以进行更新。
可选地,在根据本发明的版本管理方法中,还包括步骤:在生成与当前版本和先前版本相关联的差异包之后,将所述当前版本文件包和差异包上传至文件服务器,并接收所述文件服务器返回的、与所述当前版本文件包和差异包相对应的链接;以及所述向客户端发送当前版本文件包和/或差异包的步骤包括:向客户端发送当前版本文件包和/或差异包的链接,以便客户端通过所述链接从所述文件服务器下载所述当前版本文件包和/或差异包。
可选地,在根据本发明的版本管理方法中,所述生成与当前版本和先前版本相关联的差异包的步骤包括:将当前版本文件包与预定数量个先前版本的文件包进行比较,并基于所述比较的结果生成对应预定数量先前版本的差异包。
可选地,在根据本发明的版本管理方法中,所述根据客户端的当前状态向客户端发送所述当前版本文件包和/或差异包的步骤包括:根据所述客户端的当前状态确定所述客户端的本地版本;如果所述客户端的本地版本在所述预定数量个先前版本之内,则向所述客户端发送与所述当前版本和所述本地版本相关联的差异包;如果所述客户端的本地版本不在所述预定数量个先前版本之内,则向所述客户端发送当前版本文件包。
可选地,在根据本发明的版本管理方法中,所述当前版本文件包包括适于在客户端执行的脚本文件;以及所述生成与当前版本和先前版本相关联的差异包的步骤包括:将所述当前版本的脚本文件与对应于先前版本的脚本文件进行内容对比,以生成包含内容差别的差异文件。
可选地,在根据本发明的版本管理方法中,所述当前版本文件包还包括资源文件列表,所述资源文件列表包括一个或多个资源文件,所述资源文件包含执行所述脚本文件时使用的资源内容;以及所述生成与当前版本和先前版本相关联的差异包的步骤还包括:遍历所述资源文件列表生成配置文件,所述配置文件包括与所述一个或多个资源文件对应的位置信息和哈希值;将当前版本的配置文件与对应于先前版本的配置文件进行对比,生成新的资源文件列表。
可选地,在根据本发明的版本管理方法中,所述生成新的资源文件列表的步骤包括:将当前版本的配置文件中的资源文件对应的哈希值与先前版本的配置文件中的资源文件对应的哈希值进行对比;将当前版本的配置文件中与先前版本的配置文件中哈希值相同的资源文件移除,以生成新的资源文件列表。
可选地,在根据本发明的版本管理方法中,所述生成与所述当前版本和先前版本相关联的差异包的步骤还包括:将所述差异文件与新的资源文件列表合并,生成所述差异包。
可选地,在根据本发明的版本管理方法中,还包括步骤:在对当前版本的源代码文件进行编译之前,从代码服务器获取所述当前版本的源代码文件。
可选地,在根据本发明的版本管理方法中,还包括步骤:在所述接收客户端的更新请求之后,根据客户端的用户账号和终端ID确定所述客户端的当前状态。
根据本发明的又一个方面,提供了一种版本更新方法,适于在客户端执行,所述客户端耦接到计算设备,所述计算设备适于执行如上所述的版本管理方法来进行版本管理,所述方法包括步骤:向所述计算设备发送更新请求;以及接收所述计算设备发送的与客户端当前状态相对应的差异包进行更新。
可选地,在根据本发明的版本更新方法中,所述接收计算设备发送的与客户端当前状态相对应的差异包进行更新包括步骤:根据所述差异包中的差异文件,对该客户端本地的脚本文件进行更新,生成更新后的脚本文件;将所述差异包中的新的资源文件列表存储到该客户端本地的资源文件列表所在的文件夹;以及加载所述更新后的脚本文件以进行更新。
根据本发明的一个方面,提供了一种版本管理系统,包括:版本管理服务器,适于执行如上所述的方法来进行版本管理;以及一个或多个客户端,与所述版本管理服务器通信连接,适于向版本管理服务器发送更新请求,并适于接收所述版本管理服务器发送的与该客户端当前状态相对应的当前版本文件包和/或差异包以进行更新。
可选地,在根据本发明的版本管理系统中,还包括:文件服务器,与所述版本管理服务器通信连接,适于存储版本管理服务器上传的当前版本文件包和/或差异包,以及返回与所述当前版本文件包和/或差异包相对应的链接。
可选地,在根据本发明的版本管理系统中,还包括:代码服务器,适于存储当前版本的源代码文件。
根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述的版本管理方法的指令。
根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述方法。
根据本发明的技术方案,通过将当前版本文件包分别与预定数量个先前版本的文件包进行比较,并基于比较的结果生成对应预定数量个先前版本的差异包。从而,当客户端的本地版本在预定数量个先前版本之内时,便可以只下载差异包来进行更新,无需更新全部代码。差异包与当前版本文件包相比,文件包体积较小,无论是下载速度还是更新速度均较快,有利于提高客户端的更新效率。而且,由于当前版本文件包、差异包均是在计算设备中生成,基于相同的环境和配置,有利于进行高效地维护和升级。
另外,通过将当前版本文件包和差异包上传至文件服务器,客户端通过链接从文件服务器下载当前版本文件包和/或差异包。这样,能实现对更新包的统一管理。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的版本管理系统100的示意图;
图2示出了根据本发明一个实施例的计算设备200的示意图;
图3示出了根据本发明一个实施例的版本管理方法300的流程图;
图4示出了根据本发明一个实施例的配置文件的截图;
图5示出了根据本发明一个实施例的版本更新方法500的流程图;
图6示出了根据本发明一个实施例的版本管理装置600的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的版本管理系统100的示意图。如图1所示,版本管理系统100包括版本管理服务器200和客户端110。
客户端110即用户所使用的终端设备,其具体可以是桌面电脑、笔记本电脑等个人计算机,也可以是手机、平板电脑、多媒体设备、智能可穿戴设备等,但不限于此。版本管理服务器200用于向客户端110提供服务,其可以实现为应用服务器、Web服务器等;也可以实现为桌面电脑、笔记本电脑、处理器芯片、手机、平板电脑等计算设备,但不限于此。
在本发明的实施例中,版本管理服务器200可用于向用户提供应用的版本更新服务,例如,版本管理服务器200可以作为通讯社交应用的服务器,通讯社交应用例如可以是短信、微信、微博、贴吧等应用;又例如,版本管理服务器200可以作为某个游戏应用的服务器。应当理解,本发明的版本管理服务器200所提供的版本更新服务不受限于应用的具体种类。另外,版本管理服务器200可以是任何能够向用户提供版本更新服务的设备,而不仅限于通讯社交应用、游戏应用的服务器。
在本发明的实施例中,版本管理服务器200适于执行版本管理方法。本发明的版本管理方法将在下文中详述。客户端110与版本管理服务器200通信连接,例如通过有线或无线的方式网络连接。客户端110适于向版本管理服务器200发送更新请求,版本管理服务器200在接收到更新请求后向客户端110发送与客户端110的当前状态相对应的当前版本文件包和/或差异包,以便客户端110进行更新。
在一个实施例中,版本管理系统100还包括文件服务器120,文件服务器120与版本管理服务器200通信连接,例如通过有线或无线的方式网络连接。版本管理服务器200生成当前版本文件包和/或差异包,并将生成的当前版本文件包和/或差异包上传至文件服务器120存储。文件服务器120向版本管理服务器200返回与当前版本文件包和/或差异包相对应的链接。
进一步地,版本管理服务器200在接收到客户端110的更新请求后,向客户端110发送当前版本文件包和/或差异包的链接。客户端110通过该链接从文件服务器120下载当前版本文件包和/或差异包。
在一个实施例中,版本管理系统100还包括代码服务器130。代码服务器130中存储有当前版本的源代码文件。代码服务器例如是Git服务器,但不限于此。版本管理服务器200通过从代码服务器130获取当前版本的源代码文件,并对其进行编译生成当前版本文件包。通过将当前版本文件包与对应于先前版本的先前版本文件包进行比较,并基于比较的结果生成与当前版本、先前版本相关联的差异包。在一个实施例中,版本管理系统100还包括数据存储装置140。数据存储装置140可以是关系型数据库例如MySQL、ACCESS等,也可以是非关系型数据库例如NoSQL等;可以是驻留于版本管理服务器200中的本地数据库,也可以作为分布式数据库例如HBase等设置于多个地理位置处,总之,数据存储装置140用于存储数据,本发明对数据存储装置140的具体部署、配置情况不做限制。版本管理服务器200可以与数据存储装置140连接,并获取数据存储装置140中所存储的数据。例如,版本管理服务器200可以直接读取数据存储装置140中的数据(在数据存储装置140为版本管理服务器200的本地数据库时),也可以通过有线或无线的方式接入互联网,并通过数据接口来获取数据存储装置140中的数据。
在本发明的实施例中,文件服务器120向版本管理服务器200返回链接后,版本管理服务器200将链接存储到数据存储装置140。版本管理服务器200在接收到客户端110的更新请求后,从数据存储装置140中获取链接,并将链接发送至客户端110。
在一个实施例中,本发明的版本管理服务器200可以实现为一种计算设备,使得本发明的版本管理方法可以在计算设备中执行。图2示出了根据本发明一个实施例的计算设备200的结构图。如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备200中,应用222包括版本管理装置600,版本管理装置600包括多条程序指令,这些程序指令可以指示处理器104执行版本管理方法300。版本管理装置600驻留在计算设备200中,以便计算设备200通过执行版本管理方法300来进行版本管理。
图3示出了根据本发明一个实施例的版本管理方法300的流程图。方法300适于在计算设备(例如前述计算设备200)中执行。如图3所示,版本管理方法300始于步骤S305。
需要说明的是,在具体实施例中,本发明仅以ReactNative开发为例对版本管理方法300进行了具体说明。但,应当理解,本发明的版本管理方法300并不受限于应用开发的具体方式。任何能通过本发明的版本管理方法300来进行版本管理的应用及其开发方式均在本发明的保护范围之内。
根据一个实施例,在步骤S305中,计算设备200从代码服务器获取当前版本的源代码文件。应当指出,开发人员每次会将经ReactNative开发的最新版本(当前版本)的源代码文件上传至代码服务器中,这样,代码服务器中存储有当前版本以及多个先前版本的源代码文件,并对各个版本的源代码文件进行统一管理。当代码服务器中新上传了当前版本的源代码文件后,计算设备200便从代码服务器获取新的当前版本的源代码文件。而计算设备200在这之前获取的源代码文件便相应成为该当前版本的先前版本。这里,代码服务器例如是Git服务器,计算设备200可通过API接口从Git服务器获取源代码文件,但本发明不限于代码服务器的具体种类。
在获取当前版本的源代码文件之后,开始步骤S310。在步骤S310中,计算设备200对获取的当前版本的源代码文件进行编译,以生成与当前版本相对应的当前版本文件包。这里,计算设备200每次从代码服务器获取当前版本的源代码文件后,都会在本地生成一个唯一命名的目录,并将当前版本的源代码文件、以及编译后生成的相对应的当前版本文件包都存储在该目录。应当理解,在这之前获取的先前版本的源代码文件、及其对应的先前版本文件包也分别存储在唯一命名的目录下。通过对不同版本的源代码文件及相应的文件包分别存储在不同的目录下,使计算设备200每次获取当前版本的源代码文件后,编译生成的当前版本文件包,均不会重复覆盖先前版本文件包。
根据一种实施方式,计算设备200在对源代码文件进行编译时,通过Java的Runtime类调用编译脚本。应当理解,每个Java应用程序都对应一个Runtime类实例,使应用程序能够与其运行的环境相连接。
其中,ios执行react-native bundle--entry-fileindex.ios.js--bundle-output./bundle/main.jsbundle--platform ios--dev false。
Android执行react-native bundle--entry-file index.android.js--bundle-output./bundle/index.android.bundle--platform android--dev false。
随后,在步骤S320中,计算设备200将当前版本文件包与对应于先前版本的先前版本文件包进行比较,并基于比较的结果生成与当前版本、先前版本相关联的差异包。具体地,计算设备200是将当前版本文件包分别与预定数量个先前版本的文件包进行比较,并基于比较的结果生成对应预定数量个先前版本的差异包。差异包可作为客户端的更新包,供客户端更新使用。可以理解,在编译生成当前版本文件包之前,预定数量个先前版本的文件包已存储在计算设备200本地目录下。
需要说明的是,预定数量个先前版本是在生成当前版本文件包之前、最近生成的连续的版本,换言之,当前版本的文件包与预定数量个先前版本的文件包具有连续的版本号。这里,预定数量是基于先前版本与当前版本文件包的差异性大小来设置。可以理解的是,如果当先前版本与当前版本之间已更新过多代,两者之间存在多个版本(超过预定数量个版本)的差异,这样,基于比较结果生成差异包的话,差异包与当前版本文件包的区别很小。因此,也就没有必要再生成差异包。根据一种实施方式,预定数量个先前版本文件包可以是10个先前版本文件包,但本发明不限于该数量设置。
在生成与当前版本和先前版本相关联的差异包之后,进行步骤S325。在步骤S325中,计算设备200将当前版本文件包和差异包上传至文件服务器,并接收文件服务器返回的、与当前版本文件包和差异包相对应的链接。这里,计算设备200可以将文件服务器返回的链接存储在与计算设备200耦接的数据存储装置中。
随后,在步骤S330中,计算设备200接收客户端的更新请求,并根据客户端的当前状态向客户端发送当前版本文件包和/或差异包。这里,根据客户端的当前状态能确定其本地版本,从而根据客户端的本地版本向客户端发送当前版本文件包和/或差异包。具体地,计算设备200通过从数据存储装置中获取当前版本文件包或差异包的链接,并将该链接发送给客户端,以便客户端通过该链接从文件服务器下载当前版本文件包或差异包,并根据当前版本文件包或差异包进行更新。
这里,通过将当前版本文件包和差异包上传至文件服务器,客户端通过链接从文件服务器下载当前版本文件包和/或差异包。这样,能实现对更新包的统一管理。
根据一个实施例,计算设备200在接收客户端的更新请求之后,根据客户端的用户账号和终端ID确定该客户端的当前状态,并根据客户端的当前状态确定客户端的本地版本。进而,计算设备200判断客户端的本地版本是否在预定数量个先前版本之内。如果客户端的本地版本在预定数量个先前版本之内(即是本地版本对应预定数量个先前版本之一),则向该客户端发送与当前版本、本地版本(即是本地版本所对应的先前版本)相关联的差异包。
如果客户端的本地版本不在预定数量个先前版本之内,则向客户端发送当前版本文件包。应当理解,如果客户端的本地版本不在预定数量个先前版本之内,说明该客户端的本地版本许久未更新,其与当前版本文件包存在较大的差异,可以直接下载当前版本文件包来更新。
根据本发明的技术方案,通过将当前版本文件包分别与预定数量个先前版本的文件包进行比较,并基于比较的结果生成对应预定数量个先前版本的差异包。从而,当客户端的本地版本在预定数量个先前版本之内时,便可以只下载差异包来进行更新,无需更新全部代码。差异包与当前版本文件包相比,文件包较小,无论是下载速度还是更新速度均较快,有利于提高客户端的更新效率。而且,由于当前版本文件包、差异包均是在计算设备中生成,基于相同的环境和配置,能进行高效地维护和升级。
根据一个实施例,计算设备200编译生成的当前版本文件包包括脚本文件和资源文件列表,脚本文件适于在客户端执行。资源文件列表包括一个或多个资源文件,资源文件包含客户端在执行脚本文件时使用的资源内容。
例如,ios打包生成index.ios.bundle脚本文件和assets资源文件列表,assets资源文件列表里的资源文件包括脚本文件引用的图片。Android打包生成index.android.bundle脚本文件和drawable-xxx命名的五个资源文件列表。
进一步地,在步骤S320中,计算设备200通过将当前版本文件包与先前版本文件包进行比较生成的差异包包括差异文件(对应于脚本文件的差异)、新的资源文件列表(对应于资源文件列表的差异)。具体地,计算设备200通过将当前版本的脚本文件与对应于先前版本的脚本文件进行内容对比,生成包含内容差别的差异文件。根据一种实施方式,可以采用google开源工具google-diff-match-patch来比较脚本文件,但本发明不限于此,任何能实现对文本文件进行比较的工具均在本发明的保护范围内。
进而,通过遍历当前版本、先前版本的资源文件列表,分别生成对应于当前版本、先前版本的配置文件。图4示出了根据本发明一个实施例中的配置文件的截图。如图4所示,配置文件包括与资源文件列表中的一个或多个资源文件对应的位置信息和哈希值(Hash值)。具体而言,通过遍历资源文件列表,为每个资源文件生成对应的哈希值,并将哈希值按照对应的资源文件的位置信息(所在的目录)保存在配置文件中。
通过将当前版本的配置文件与对应于先前版本的配置文件进行对比,生成新的资源文件列表。这里,通过将当前版本的配置文件中的资源文件对应的哈希值与先前版本的配置文件中的资源文件对应的哈希值进行对比,并将当前版本的配置文件中与先前版本的配置文件中哈希值相同的资源文件移除,移除哈希值相同的资源文件后便生成了新的资源文件列表。
最后,将差异文件与新的资源文件列表合并,即生成了与当前版本和先前版本相关联的差异包。
图5示出了根据本发明一个实施例的版本更新方法500的流程图。版本更新方法500适于在客户端执行,客户端与计算设备200通信连接。计算设备200适于执行如上所述的版本管理方法来进行版本管理。如图5所示,版本更新方法500始于步骤S510。
在步骤S510中,客户端向计算设备200发送更新请求。
在步骤S520中,客户端接收计算设备200发送的与客户端当前状态相对应的差异包,通过获取的差异包进行更新。具体地,计算设备200接收到客户端的更新请求后,根据客户端的当前状态确定客户端的本地版本,并根据客户端的本地版本向客户端发送相应的差异包的链接,客户端通过该链接从文件服务器下载相应版本的差异包来进行更新。
进一步地,在客户端获取差异包后,根据差异包中的差异文件,对客户端本地的脚本文件进行更新。通过google-diff-match-patch工具将差异文件与本地的脚本文件合并,生成更新后的脚本文件。这里,本发明不限于google-diff-match-patch工具,任何能实现对文本文件进行匹配、合并的工具均在本发明的保护范围内。另外,客户端将差异包中的新的资源文件列表存储到客户端本地的资源文件列表所在的文件夹。这样,客户端通过加载更新后的脚本文件便能进行热更新。
图6示出了根据本发明一个实施例的版本管理装置600的示意图,版本管理装置600驻留在计算设备200中,以使计算设备200执行本发明的版本管理方法300。如图6所示,版本管理装置600包括获取模块605、编译模块610、生成模块620、传输模块625以及更新模块630。
根据一个实施例,获取模块605从代码服务器获取当前版本的源代码文件。编译模块610对经获取模块605获取的当前版本的源代码文件进行编译以生成与当前版本相对应的当前版本文件包。生成模块620将当前版本文件包与对应于先前版本的先前版本文件包进行比较,并基于比较的结果生成与当前版本和先前版本相关联的差异包。传输模块625,将当前版本文件包和差异包上传至文件服务器,并接收文件服务器返回的、与当前版本文件包和差异包相对应的链接。更新模块630接收客户端的更新请求,并根据客户端的当前状态向客户端发送当前版本文件包和/或差异包以进行更新。这里,更新模块630通过向客户端发送当前版本文件包和/或差异包的链接,以便客户端通过链接从文件服务器下载当前版本文件包和/或差异包。
需要说明的是,获取模块605具体用于执行如前述步骤S305的方法,编译模块610具体用于执行如前述步骤S310的方法,生成模块620具体用于执行如前述步骤S320的方法,传输模块625具体用于执行如前述步骤S325的方法,更新模块630具体用于执行如前述步骤S330的方法。
关于获取模块605、编译模块610、生成模块620、传输模块625、更新模块630的处理逻辑和功能可以参见前述版本管理方法300中对步骤S305~S330的相关描述,此处不再赘述。
A9、如A1-A8任一项所述的版本管理方法,还包括步骤:在对当前版本的源代码文件进行编译之前,从代码服务器获取所述当前版本的源代码文件。A10、如A1-A9任一项所述的版本管理方法,还包括步骤:在所述接收客户端的更新请求之后,根据客户端的用户账号和终端ID确定所述客户端的当前状态。
B12、如B11所述的版本更新方法,其中,所述接收计算设备发送的与客户端当前状态相对应的差异包进行更新包括步骤:根据所述差异包中的差异文件,对该客户端本地的脚本文件进行更新,生成更新后的脚本文件;将所述差异包中的新的资源文件列表存储到该客户端本地的资源文件列表所在的文件夹;以及加载所述更新后的脚本文件以进行更新。
C14、如C13所述的版本管理系统,还包括:文件服务器,与所述版本管理服务器通信连接,适于存储版本管理服务器上传的当前版本文件包和/或差异包,以及返回与所述当前版本文件包和/或差异包相对应的链接。C15、如C13或者C14所述的版本管理系统,还包括:代码服务器,适于存储当前版本的源代码文件。
D16、一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如A1-A10中任一项所述的版本管理方法的指令。
E17、一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如A1-A10中任一项所述方法。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的多语言垃圾文本的识别方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (14)

1.一种版本管理方法,在计算设备中执行,包括步骤:
对当前版本的源代码文件进行编译以生成与所述当前版本相对应的当前版本文件包,所述当前版本文件包包括适于在客户端执行的脚本文件和资源文件列表,资源文件列表包括一个或多个资源文件,资源文件包含客户端在执行脚本文件时使用的资源内容;
将所述当前版本文件包与对应于先前版本的预定数量个先前版本文件包进行比较,并基于所述比较的结果生成与所述当前版本和先前版本相关联的对应预定数量先前版本的差异包,若所述当前版本与所述先前版本之间存在超过预定数量个版本的差异,则不生成差异包,所述当前版本文件包与所述预定数量个先前版本文件包具有连续的版本号;
将所述当前版本文件包和差异包上传至文件服务器,并接收所述文件服务器返回的、与所述当前版本文件包和差异包相对应的链接;以及
接收客户端的更新请求,根据所述客户端的当前状态向客户端发送所述当前版本文件包和/或差异包的链接,以便客户端通过所述链接从所述文件服务器下载所述当前版本文件包和/或差异包以进行更新;
其中,所述生成与当前版本和先前版本相关联的差异包的步骤包括:
将所述当前版本的脚本文件和资源文件列表与对应于先前版本的脚本文件和资源文件列表进行内容对比,以生成对应于脚本文件差异的差异文件,和对应于资源文件列表差异的新的资源文件列表。
2.如权利要求1所述的版本管理方法,其中,所述根据客户端的当前状态向客户端发送所述当前版本文件包和/或差异包的步骤包括:
根据所述客户端的当前状态确定所述客户端的本地版本;
如果所述客户端的本地版本在所述预定数量个先前版本之内,则向所述客户端发送与所述当前版本和所述本地版本相关联的差异包;
如果所述客户端的本地版本不在所述预定数量个先前版本之内,则向所述客户端发送当前版本文件包。
3.如权利要求2所述的版本管理方法,其中,
所述生成与当前版本和先前版本相关联的差异包的步骤还包括:
遍历所述资源文件列表生成配置文件,所述配置文件包括与所述一个或多个资源文件对应的位置信息和哈希值;
将当前版本的配置文件与对应于先前版本的配置文件进行对比,生成新的资源文件列表。
4.如权利要求3所述的版本管理方法,其中,所述生成新的资源文件列表的步骤包括:
将当前版本的配置文件中的资源文件对应的哈希值与先前版本的配置文件中的资源文件对应的哈希值进行对比;
将当前版本的配置文件中与先前版本的配置文件中哈希值相同的资源文件移除,以生成新的资源文件列表。
5.如权利要求3或者4所述的版本管理方法,其中,所述生成与所述当前版本和先前版本相关联的差异包的步骤还包括:
将所述差异文件与新的资源文件列表合并,生成所述差异包。
6.如权利要求1所述的版本管理方法,还包括步骤:
在对当前版本的源代码文件进行编译之前,从代码服务器获取所述当前版本的源代码文件。
7.如权利要求1所述的版本管理方法,还包括步骤:
在所述接收客户端的更新请求之后,根据客户端的用户账号和终端ID确定所述客户端的当前状态。
8.一种版本更新方法,适于在客户端执行,所述客户端耦接到计算设备,所述计算设备适于执行如权利要求1-7任一项所述的版本管理方法来进行版本管理,所述方法包括步骤:
向所述计算设备发送更新请求;以及
接收所述计算设备发送的与客户端当前状态相对应的差异包进行更新。
9.如权利要求8所述的版本更新方法,其中,所述接收计算设备发送的与客户端当前状态相对应的差异包进行更新包括步骤:
根据所述差异包中的差异文件,对该客户端本地的脚本文件进行更新,生成更新后的脚本文件;
将所述差异包中的新的资源文件列表存储到该客户端本地的资源文件列表所在的文件夹;以及
加载所述更新后的脚本文件以进行更新。
10.一种版本管理系统,包括:
版本管理服务器,适于执行如权利要求1-7中任一项所述的方法来进行版本管理;以及
一个或多个客户端,与所述版本管理服务器通信连接,适于向版本管理服务器发送更新请求,并适于接收所述版本管理服务器发送的与该客户端当前状态相对应的当前版本文件包和/或差异包以进行更新。
11.如权利要求10所述的版本管理系统,还包括:
文件服务器,与所述版本管理服务器通信连接,适于存储版本管理服务器上传的当前版本文件包和/或差异包,以及返回与所述当前版本文件包和/或差异包相对应的链接。
12.如权利要求10或者11所述的版本管理系统,还包括:
代码服务器,适于存储当前版本的源代码文件。
13.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-7中任一项所述的版本管理方法的指令。
14.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-7中任一项所述方法。
CN201910760135.0A 2019-08-16 2019-08-16 版本管理方法、版本更新方法和版本管理系统 Active CN110532016B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910760135.0A CN110532016B (zh) 2019-08-16 2019-08-16 版本管理方法、版本更新方法和版本管理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910760135.0A CN110532016B (zh) 2019-08-16 2019-08-16 版本管理方法、版本更新方法和版本管理系统

Publications (2)

Publication Number Publication Date
CN110532016A CN110532016A (zh) 2019-12-03
CN110532016B true CN110532016B (zh) 2023-12-19

Family

ID=68663506

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910760135.0A Active CN110532016B (zh) 2019-08-16 2019-08-16 版本管理方法、版本更新方法和版本管理系统

Country Status (1)

Country Link
CN (1) CN110532016B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625250B (zh) * 2020-04-22 2023-11-10 Oppo(重庆)智能科技有限公司 应用更新方法、装置、存储介质及电子设备
CN112445542A (zh) * 2020-11-25 2021-03-05 平安普惠企业管理有限公司 系统环境配置的比对方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103701930A (zh) * 2014-01-07 2014-04-02 浙江大学 一种移动应用程序的实时更新方法及系统
CN103825925A (zh) * 2012-11-19 2014-05-28 腾讯科技(深圳)有限公司 应用程序升级方法、系统及其客户端
CN104539696A (zh) * 2014-12-26 2015-04-22 北京像素软件科技股份有限公司 一种客户端增量更新的方法及系统
CN109240696A (zh) * 2017-05-19 2019-01-18 腾讯科技(深圳)有限公司 一种软件更新方法及装置
CN109471653A (zh) * 2018-09-29 2019-03-15 百度在线网络技术(北京)有限公司 应用程序的更新方法、电子设备、服务器和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190155598A1 (en) * 2017-11-17 2019-05-23 Apple Inc. Techniques for updating a file using a multi-version patch file

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103825925A (zh) * 2012-11-19 2014-05-28 腾讯科技(深圳)有限公司 应用程序升级方法、系统及其客户端
CN103701930A (zh) * 2014-01-07 2014-04-02 浙江大学 一种移动应用程序的实时更新方法及系统
CN104539696A (zh) * 2014-12-26 2015-04-22 北京像素软件科技股份有限公司 一种客户端增量更新的方法及系统
CN109240696A (zh) * 2017-05-19 2019-01-18 腾讯科技(深圳)有限公司 一种软件更新方法及装置
CN109471653A (zh) * 2018-09-29 2019-03-15 百度在线网络技术(北京)有限公司 应用程序的更新方法、电子设备、服务器和存储介质

Also Published As

Publication number Publication date
CN110532016A (zh) 2019-12-03

Similar Documents

Publication Publication Date Title
EP3441876B1 (en) Patch upgrade-based file processing method and device, terminal, and storage medium
CN109976667B (zh) 一种镜像管理方法、装置及系统
JP5658283B2 (ja) アプリケーションの稼働方法、装置及びシステム
KR102042723B1 (ko) 애플리케이션을 업데이트하는 방법
US9411571B2 (en) Method and apparatus for deploying software as a service
US11016785B2 (en) Method and system for mirror image package preparation and application operation
CN106598673B (zh) 一种应用程序升级方法及系统
US9258357B2 (en) Method for accessing plural cloud storages, electronic apparatus and non-transitory computer readable medium
KR20100133382A (ko) 배포가능 개체 계층구조 내에서의 응용 프로그램 관리
CN111176717B (zh) 生成安装包的方法、装置及电子设备
CN109669692B (zh) 源码共享方法、服务器、计算机可读存储介质及系统
US9513762B1 (en) Static content updates
CN112769706B (zh) 组件化路由方法及系统
CN111459511A (zh) 应用程序的下载方法、装置及电子设备
CN110532016B (zh) 版本管理方法、版本更新方法和版本管理系统
WO2019029451A1 (zh) 发布移动应用的方法和电子设备
CN110928571A (zh) 业务程序开发方法和装置
US10318262B2 (en) Smart hashing to reduce server memory usage in a distributed system
TWI517045B (zh) JAVA cluster application system code loading and upgrading devices and methods
WO2017036197A1 (zh) 一种网元模型管理方法及装置
EP2680135B1 (en) Methods for updating applications
CN113791809B (zh) 应用异常处理方法、装置以及计算机可读存储介质
US20180341475A1 (en) Just In Time Deployment with Package Managers
CN115016862A (zh) 基于Kubernetes集群的软件启动方法、装置、服务器及存储介质
CN114860202A (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