CN111930411B - 代码升级方法、装置、计算机设备和存储介质 - Google Patents
代码升级方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111930411B CN111930411B CN202011064935.8A CN202011064935A CN111930411B CN 111930411 B CN111930411 B CN 111930411B CN 202011064935 A CN202011064935 A CN 202011064935A CN 111930411 B CN111930411 B CN 111930411B
- Authority
- CN
- China
- Prior art keywords
- file
- code
- version
- version code
- preset
- 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
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
- G06F8/656—Updates while running
-
- 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
本申请提供了一种代码升级方法、装置、计算机设备和存储介质。所述方法包括:当监听到第一版本代码文件更新时,获取更新的第一版本代码文件,调用代码转换工具,对更新的第一版本代码文件进行代码转换,得到第二版本代码文件,根据第二版本代码文件查询预设第二版本代码库,得到查询结果,当查询结果为存在关联的代码文件时,根据关联的代码文件得到文件冲突结果,根据文件冲突结果将第二版本代码文件更新至预设第二版本代码库,当查询结果为不存在关联的代码文件时,将第二版本代码文件复制至预设第二版本代码库。采用本方法能够提高代码升级效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种代码升级方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,编程语言也进一步发展,出现了Python。Python是一种跨平台的计算机程序设计语言, 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,目前已被广泛使用,Python版本包括Python2和Python3,其中Python3是新发布的Python版本,此版本不完全兼容之前的Python2版本,由于官方将不再对Python2提供维护,因此需要对Python2代码进行升级,转换为Python3代码。
传统技术中,在对Python2代码进行升级,转换为Python3代码时,常用的技术有两种,一是停止整个项目的开发,使用自动化工具将整个项目的Python2代码转换为Python3文件,人工测试修复部分问题并充分验证通过后,切换到Python3版本继续开发。二是在Python2项目代码上做兼容改造,尽量改造成可兼容Python3环境的代码。
传统的方式虽然可以实现代码升级,但是上述两种方式中都需要复杂的数据处理、改造过程,甚至可能需要暂停整个项目的开发,其存在代码升级效率低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高代码升级效率的代码升级方法、装置、计算机设备和存储介质。
一种代码升级方法,所述方法包括:
当监听到第一版本代码文件更新时,获取更新的第一版本代码文件;
调用代码转换工具,对更新的第一版本代码文件进行代码转换,得到第二版本代码文件;
根据第二版本代码文件查询预设第二版本代码库,得到查询结果;
当查询结果为存在关联的代码文件时,根据关联的代码文件得到文件冲突结果,根据文件冲突结果将第二版本代码文件更新至预设第二版本代码库;
当查询结果为不存在关联的代码文件时,将第二版本代码文件复制至预设第二版本代码库。
一种代码升级装置,所述装置包括:
获取模块,用于当监听到第一版本代码文件更新时,获取更新的第一版本代码文件;
代码转换模块,用于调用代码转换工具,对更新的第一版本代码文件进行代码转换,得到第二版本代码文件,第二版本代码的版本级别高于第一版本代码;
查询模块,用于根据第二版本代码文件查询预设第二版本代码库,得到查询结果;
第一更新模块,用于当查询结果为存在关联的代码文件时,根据关联的代码文件得到文件冲突结果,根据文件冲突结果将第二版本代码文件更新至预设第二版本代码库;
第二更新模块,用于当查询结果为不存在关联的代码文件时,将第二版本代码文件复制至预设第二版本代码库。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
当监听到第一版本代码文件更新时,获取更新的第一版本代码文件;
调用代码转换工具,对更新的第一版本代码文件进行代码转换,得到第二版本代码文件;
根据第二版本代码文件查询预设第二版本代码库,得到查询结果;
当查询结果为存在关联的代码文件时,根据关联的代码文件得到文件冲突结果,根据文件冲突结果将第二版本代码文件更新至预设第二版本代码库;
当查询结果为不存在关联的代码文件时,将第二版本代码文件复制至预设第二版本代码库。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
当监听到第一版本代码文件更新时,获取更新的第一版本代码文件;
调用代码转换工具,对更新的第一版本代码文件进行代码转换,得到第二版本代码文件;
根据第二版本代码文件查询预设第二版本代码库,得到查询结果;
当查询结果为存在关联的代码文件时,根据关联的代码文件得到文件冲突结果,根据文件冲突结果将第二版本代码文件更新至预设第二版本代码库;
当查询结果为不存在关联的代码文件时,将第二版本代码文件复制至预设第二版本代码库。
上述代码升级方法、装置、计算机设备和存储介质,当监听到第一版本代码文件更新时,获取更新的第一版本代码文件,调用代码转换工具,对更新的第一版本代码文件进行代码转换,能够得到代码转换后的第二版本代码文件,通过根据第二版本代码文件查询预设第二版本代码库,得到查询结果,根据查询结果的不同采用不同的方式将第二版本代码文件存储至第二版本代码库,能够实现将第一版本代码平滑升级到第二版本代码,在代码升级的过程中,不需要停止整个项目的开发,也不需要在项目代码上做兼容改造,能够提高代码升级效率。
附图说明
图1为一个实施例中代码升级方法的应用环境图;
图2为一个实施例中代码升级方法的流程示意图;
图3为一个实施例中代码升级方法的示意图;
图4为一个实施例中代码升级方法的示意图;
图5为另一个实施例中代码升级方法的流程示意图;
图6为一个实施例中代码升级装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的代码升级方法,可以应用于如图1所示的应用环境中。其中,终端102与Git代码库104通过网络进行通信,Git代码库104通过网络与服务器106进行通信。当需要进行代码更新时,用户通过终端102提交第一版本代码文件至Git代码库104中的第一版本代码库,服务器106实时监听第一版本代码文件更新事件,当监听到第一版本代码文件更新时,服务器106从第一版本代码库获取更新的第一版本代码文件,调用代码转换工具,对更新的第一版本代码文件进行代码转换,得到第二版本代码文件,根据第二版本代码文件查询Git代码库104中的预设第二版本代码库,得到查询结果,当查询结果为存在关联的代码文件时,根据关联的代码文件得到文件冲突结果,根据文件冲突结果将第二版本代码文件更新至预设第二版本代码库,当查询结果为不存在关联的代码文件时,将第二版本代码文件复制至预设第二版本代码库。其中,服务器106可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端102以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在一个实施例中,如图2所示,提供了一种代码升级方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤202,当监听到第一版本代码文件更新时,获取更新的第一版本代码文件。
其中,第一版本代码是指与第二版本代码的版本不同的代码。举例说明,第一版本代码具体可以是指Python2版本代码,第二版本代码具体可以是指Python3版本代码。
具体的,当监听到第一版本代码文件更新时,服务器会从存储有更新的第一版本代码文件的第一版本代码库中拉取更新的第一版本代码文件。举例说明,当需要对某一业务进行代码更新时,用户会提交第一版本代码文件至第一版本代码库,服务器实时监听第一版本代码文件更新事件,当监听到第一版本代码文件更新时,会从第一版本代码库中拉取用户提交的第一版本代码文件,即更新的第一版本代码文件。
步骤204,调用代码转换工具,对更新的第一版本代码文件进行代码转换,得到第二版本代码文件。
其中,代码转换工具是指对代码进行转换的工具,可以将A版本代码转换为B代码,举例说明,代码转换工具可以将版本级别低的版本代码转换为版本级别高的版本代码。比如,代码转换工具具体可以是指2to3工具,能够将python2版本代码转换为python3版本代码。
具体的,服务器会调用代码转换工具,对更新的第一版本代码文件进行代码转换,得到第二版本代码文件。进一步的,在得到第二版本代码文件之后,服务器还会将第二版本代码文件存储至预设中间层代码库备用,中间层代码库主要用于存储使用代码转换工具得到的第二版本代码文件。
步骤206,根据第二版本代码文件查询预设第二版本代码库,得到查询结果。
其中,预设第二版本代码库是指用于存储第二版本代码文件的数据库,在预设第二版本代码库中的第二版本代码文件包括由第一版本代码文件经过代码转换工具处理生成的以及由用户直接提交的第二版本代码文件。
具体的,服务器会根据第二版本代码文件查询预设第二版本代码库,以确定预设第二版本代码库中是否存在与第二版本代码文件关联的代码文件,关联的代码文件是指与第二版本代码文件表征相同业务逻辑的代码文件。
步骤208,当查询结果为存在关联的代码文件时,根据关联的代码文件得到文件冲突结果,根据文件冲突结果将第二版本代码文件更新至预设第二版本代码库。
其中,文件冲突结果用于表征是否存在文件冲突,存在文件冲突是指该关联的代码文件已被用户更新提交,若直接用转换得到的第二版本代码文件对其进行覆盖,会影响到用户更新提交的代码文件。不存在文件冲突是指该关联的代码文件未被用户更新提交,可以直接用转换得到的第二版本代码文件对其进行覆盖,不会产生其他影响。
具体的,当查询结果为存在关联的代码文件时,表示预设第二版本代码库中存在与第二版本代码文件表征相同业务逻辑的代码文件,若要进行代码升级,需要对关联的代码文件进行更新,服务器会根据关键的代码文件确定是否存在文件冲突,得到文件冲突结果,再根据不同的文件冲突结果,采用不同的方式将第二版本代码文件更新至预设第二版本代码库。进一步的,根据不同的文件冲突结果,采用不同的方式将第二版本代码文件更新至预设第二版本代码库具体可以为:当存在文件冲突时,从第二版本代码文件冲获取更新代码块,只将更新代码库更新至预设第二版本代码库,当不存在文件冲突时,用第二版本代码文件覆盖预设第二版本代码库中的关联的代码文件。其中,更新代码块是指在第二代码文件中有更新的代码块,与更新的第一版本代码文件中有更新的代码块对应。
步骤210,当查询结果为不存在关联的代码文件时,将第二版本代码文件复制至预设第二版本代码库。
具体的,当查询结果为不存在关联的代码文件时,表示预设第二版本代码库中不存在与第二版本代码文件表征相同业务逻辑的代码文件,服务器只要直接将第二版本代码文件复制至预设第二版本代码库即可实现代码升级。
上述代码升级方法,当监听到第一版本代码文件更新时,获取更新的第一版本代码文件,调用代码转换工具,对更新的第一版本代码文件进行代码转换,能够得到代码转换后的第二版本代码文件,通过根据第二版本代码文件查询预设第二版本代码库,得到查询结果,根据查询结果的不同采用不同的方式将第二版本代码文件存储至第二版本代码库,能够实现将第一版本代码平滑升级到第二版本代码,在代码升级的过程中,不需要停止整个项目的开发,也不需要在项目代码上做兼容改造,能够提高代码升级效率。
在一个实施例中,在当监听到第一版本代码文件更新时,获取更新的第一版本代码文件之前,还包括:
监听第一版本代码文件更新事件;
当监听到第一版本代码文件更新时,获取更新的第一版本代码文件包括:
当监听到更新的第一版本代码文件提交至预设第一版本代码库时,获取更新的第一版本代码文件。
具体的,服务器会监听第一版本代码文件更新事件,当监听到更新的第一版本代码文件提交至预设第一版本代码库时,获取更新的第一版本代码文件。举例说明,第一版本代码文件更新事件具体可以是指Python2代码的master提交。
本实施例中,通过监听第一版本代码文件更新事件,能够实现对更新的第一版本代码文件的获取。
在一个实施例中,根据第二版本代码文件查询预设第二版本代码库,得到查询结果包括:
从预设第二版本代码库拉取代码文件列表,并获取第二版本代码文件的文件标识;
比对文件标识和代码文件列表;
当代码文件列表中存在与文件标识对应的关联文件标识时,得到查询结果为存在关联的代码文件;
当代码文件列表中不存在与文件标识对应的关联文件标识时,得到查询结果为不存在关联的代码文件。
其中,代码文件列表是指存在于第二版本代码库中的代码文件的列表,第二版本代码文件的文件标识用于标识唯一的第二版本代码文件,比如,文件标识具体可以是文件名称,文件名称可以分为文件前缀和文件后缀,文件前缀用于指示文件存储路径。关联文件标识是指关联的代码文件的文件标识。
具体的,服务器会从预设第二版本代码库拉取代码文件列表,并获取第二版本代码文件的文件标识,通过比对文件标识和代码文件列表,确定在预设第二版本代码库中是否存在与第二版本代码文件对应的关联的代码文件。当代码文件列表中存在与文件标识对应的关联文件标识时,表示存在关联的代码文件,当代码文件列表中不存在与文件标识对应的关联文件标识时,表示不存在关联的代码文件。
本实施例中,通过从预设第二版本代码库拉取代码文件列表,并获取第二版本代码文件的文件标识,比对文件标识和代码文件列表,能够实现对预设第二版本代码库中是否存在与第二版本代码文件对应的关联的代码文件的确定。
在一个实施例中,还包括:
监听第二版本代码文件更新事件;
当监听到更新的第二版本代码文件提交至预设第二版本代码库时,获取更新的第二版本代码文件的更新文件标识;
根据更新文件标识,更新预设加锁文件列表。
其中,更新文件标识是指更新的第二版本代码文件的标识,比如,更新文件标识具体可以是指更新的第二版本代码文件的文件名称。
具体的,服务器会监听第二版本代码文件更新事件,当监听到更新的第二版本代码文件提交至预设第二版本代码库时,会获取更新的第二版本代码文件的更新文件标识,将更新文件标识存入预设加锁文件列表中,实现对加锁文件列表的更新。
本实施例中,通过监听第二版本代码文件更新事件,当监听到第二版本代码文件更新时,获取更新的第二版本代码文件的更新文件标识,根据更新文件标识,更新预设加锁文件列表,能够通过监听实现对预设加锁文件列表的更新。
在一个实施例中,根据关联的代码文件得到文件冲突结果,根据文件冲突结果将第二版本代码文件更新至预设第二版本代码库包括:
获取关联的代码文件的关联文件标识;
根据关联文件标识查询预设加锁文件列表,得到文件冲突结果;
当文件冲突结果为存在文件冲突时,推送冲突告警提示,在得到授权时,将第二版本代码文件中的更新代码块更新至预设第二版本代码库;
当文件冲突结果为不存在文件冲突时,将第二版本代码文件覆盖关联的代码文件。
其中,预设加锁文件列表是指预先设置的存储有加锁文件目录的列表,这里的加锁文件是指用户直接提交至第二版本代码库的代码文件,在预设加锁文件列表中存储了加锁文件的文件标识。冲突告警提示是指对存在文件冲突进行提示,具体来说,就是指提示用户,在第二版本代码库中关联的代码文件已被用户更新提交,若直接用转换得到的第二版本代码文件对其进行覆盖,会影响到用户更新提交的代码文件,需要用户对文件冲突进行处理。
具体的,服务器会获取关联的代码文件的关联文件标识,根据关联文件标识查询预设加锁文件列表中是否存在对应的目标文件标识,得到文件冲突结果,并根据不同的文件冲突结果采用不同的方式将第二版本代码文件更新至预设第二版本代码库。其中,当文件冲突结果为存在文件冲突时,服务器会推送冲突告警提示至用户终端,在得到用户终端的授权时,将第二版本代码文件中的更新代码块更新至预设第二版本代码库,当文件冲突结果为不存在文件冲突时,将第二版本代码文件覆盖关联的代码文件。
本实施例中,通过获取关联的代码文件的关联文件标识,根据关联文件标识查询预设加锁文件列表,得到文件冲突结果,根据不同的文件冲突结果采用不同的方式将第二版本代码文件更新至预设第二版本代码库,能够实现对预设第二版本代码库的更新。
在一个实施例中,根据关联文件标识查询预设加锁文件列表,得到文件冲突结果包括:
当预设加锁文件列表中存在与关联文件标识对应的目标文件标识时,得到文件冲突结果为存在文件冲突;当预设加锁文件列表中不存在与关联文件标识对应的目标文件标识时,得到文件冲突结果为不存在文件冲突。
其中,目标文件标识是指预设加锁文件列表中存储的、与关联文件标识相同的文件标识。
具体的,当预设加锁文件列表中存在与关联文件标识对应的目标文件标识时,表示在第二版本代码库中的关联的代码文件是加锁文件,若直接对关联的代码文件进行覆盖会存在文件冲突。当预设加锁文件列表中不存在与关联文件标识对应的目标文件标识时,表示在第二版本代码库中的关联的代码文件不是加锁文件,可直接对关联的代码文件进行覆盖,不会存在文件冲突。
本实施例中,通过根据关联文件标识查询预设加锁文件列表中是否存在对应的目标文件标识,能够得到文件冲突结果。
在一个实施例中,在调用代码转换工具,对更新的第一版本代码文件进行代码转换,得到第二版本代码文件之后,还包括:
将第二版本代码文件存入预设中间层代码库;
当文件冲突结果为存在文件冲突时,推送冲突告警提示,在得到授权时,将第二版本代码文件中的更新代码块更新至预设第二版本代码库包括:
当文件冲突结果为存在文件冲突时,推送冲突告警提示至用户终端;
响应用户终端反馈的与冲突告警提示对应的代码处理操作消息,从中间层代码库获取第二版本代码文件中的更新代码块,将更新代码块更新至预设第二版本代码库。
具体的,在对更新的第一版本代码文件进行代码转换,得到第二版本代码文件之后,服务器会将第二版本代码文件存入预设中间层代码库。当文件冲突结果为存在文件冲突时,服务器会推送冲突告警提示至用户终端,响应用户终端反馈的与冲突告警提示对应的代码处理操作消息,从预设中间层代码库获取代码转换后的第二版本代码文件中的更新代码块,将更新代码块更新至预设第二版本代码库,实现代码升级。
这里需要说明的是,存在文件冲突是指直接对在第二版本代码库中的、与第二版本代码文件对应的关联的代码文件进行覆盖的话,会影响到用户直接提交至第二版本代码库中的关联的代码文件,虽然在第二版本代码库中是存在对应的关联的代码文件的,但是在对代码文件进行修改时,通过更新第一版本代码文件和直接提交更新代码文件值第二版本代码库,可能是对同一个代码文件中的不同代码段进行修改,所以此处只要通过将第二版本代码文件中更新代码块更新至预设第二版本代码库,而不是直接覆盖,即可解决文件冲突。
本实施例中,通过推送冲突告警提示至用户终端,响应用户终端反馈的与冲突告警提示对应的代码处理操作消息,从中间层代码库获取第二版本代码文件中的更新代码块,将更新代码块更新至预设第二版本代码库,能够实现对第二版本代码库的更新。
在一个实施例中,推送测试验证提示,测试验证提示用于指示用户对第二版本代码库中的代码文件进行测试验证。
具体的,在将第二版本代码文件复制至预设第二版本代码库或将第二版本代码文件更新至预设第二版本代码库之后,服务器会推送测试验证提示至用户终端,测试验证提示用于指示用户对第二版本代码库中的代码文件进行测试验证,修复部分异常并提交更新至第二版本代码库,完成充分验证后,即可停止第一版本代码的开发和服务部署,转为第二版本代码部署服务并在第二版本代码库上继续开发。
本实施例中,通过推送测试验证提示,能够提示用户对代码文件实现测试验证。
本申请还提供一种应用场景,该应用场景应用上述的代码升级方法,在该应用场景中进行代码升级是指将Python2版本代码升级为Python3版本代码。具体地,如图3所示,该代码升级方法在该应用场景的应用如下:
在项目运行过程中,需要对代码进行更新升级时,在开发端,用户通过用户终端提交Python2版本代码文件至Git代码库中的第一服务器,服务器实时监听Python2版本代码文件更新事件,当监听到Python2版本代码文件更新时,从第一服务器获取更新的Python2版本代码文件,调用2to3工具,对更新的Python2版本代码文件进行代码转换,得到Python3版本代码文件,将Python3版本代码文件存入中间层服务器,从第二服务器拉取代码文件列表,并获取Python3版本代码文件的文件标识,比对文件标识和代码文件列表,当代码文件列表中存在与文件标识对应的关联文件标识时,得到查询结果为存在关联的代码文件,当代码文件列表中不存在与文件标识对应的关联文件标识时,得到查询结果为不存在关联的代码文件。
当查询结果为存在关联的代码文件时,获取关联的代码文件的关联文件标识,根据关联文件标识查询预设加锁文件列表,得到文件冲突结果,当文件冲突结果为存在文件冲突时,推送冲突告警提示至用户终端,响应用户终端反馈的与冲突告警提示对应的代码处理操作消息,从中间层代码库获取Python3版本代码文件中的更新代码块,将更新代码块更新至第二服务器,当文件冲突结果为不存在文件冲突时,将Python3版本代码文件覆盖关联的代码文件。当查询结果为不存在关联的代码文件时,将Python3版本代码文件复制至第二服务器。
此外,服务器还会监听Python3版本代码文件更新事件,Python3版本代码文件更新事件为更新的Python3版本代码文件已提交至第二服务器,当监听到Python3版本代码文件更新时,获取更新的Python3版本代码文件的更新文件标识,根据更新文件标识,更新预设加锁文件列表。将Python3版本代码文件加入预设加锁文件列表,表示这些文件将不被允许自动提交到Python3版本代码库,从而避免在Python3提交更新的逻辑被Python2代码的提交无意覆盖掉。
需要对本应用场景进行说明的是,其中涉及的服务器的执行步骤可通过自动流水线实现,其中第一服务器为项目的python2版本的git库,第二服务器为项目的python3版本的git库。中间层服务器中存储第一服务器使用2to3工具生成的python3版本代码。第一服务器的代码逻辑与中间层服务器代码逻辑保持一致,第一服务器任何更新文件自动转换生成的python3代码直接提交到中间层服务器不会出现任何冲突。但是第二服务器部分文件可能会被人工提交修改,与第一服务器代码逻辑不一致,此时由于中间层服务器与第二服务器都是python3代码,可方便地从中间层服务器将部分python2新增逻辑同步到第二服务器中。
进一步的,需要对本应用场景进行说明的是,本应用场景中项目各个子业务逻辑代码是解耦的,便于各个子业务逻辑单独做Pyhton3的升级测试。举例说明,一个大团队共同协作开发的项目代码框架如图4所示,每个独立业务逻辑代码文件一般和其他业务分开,彼此间不会相互调用。共用的公共模块函数一般为接口服务、数据库连接和一些公共服务函数等,各个业务逻辑都可能会调用使用。某个业务部署服务时,将项目代码下发到服务器,并且通过配置文件来驱动代码执行具体的业务逻辑。如果存在某个业务代码依赖其他业务的代码,需要对代码做优化解耦,存在一个文件加载多个归属不同业务逻辑的文件,且通过配置选择启动具体的业务逻辑时,可以使用懒加载的方式解决这种耦合。
本申请还提供一个将Python2版本代码升级为Python3版本代码的处理流程图来说明本申请的代码升级方法,如图5所示,该代码升级方法具体包括以下步骤:
服务器实时监听Python2版本代码文件的提交,当监听到Python2版本代码文件的更新时,提取更新的Python2版本代码文件,调用代码转换工具,对更新的Python2版本代码文件进行代码转换,得到Python3版本代码文件,将Python3版本代码文件提交到中间代码库,根据Python3版本代码文件查询预设Python3版本代码库,得到查询结果,当查询结果为存在关联的代码文件时,根据关联的代码文件得到文件冲突结果(即文件是否已加锁),当文件冲突结果为存在文件冲突时,推送冲突告警提示,在得到授权时,将Python3版本代码文件中的更新代码块更新至预设Python3版本代码库,当文件冲突结果为不存在文件冲突时,将Python3版本代码文件覆盖关联的代码文件。当查询结果为不存在关联的代码文件时,将Python3版本代码文件复制至预设Python3版本代码库。
应该理解的是,虽然图2和图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2和图5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种代码升级装置,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:获取模块602、代码转换模块604、查询模块606、第一更新模块608和第二更新模块610,其中:
获取模块602,用于当监听到第一版本代码文件更新时,获取更新的第一版本代码文件;
代码转换模块604,用于调用代码转换工具,对更新的第一版本代码文件进行代码转换,得到第二版本代码文件,第二版本代码的版本级别高于第一版本代码;
查询模块606,用于根据第二版本代码文件查询预设第二版本代码库,得到查询结果;
第一更新模块608,用于当查询结果为存在关联的代码文件时,根据关联的代码文件得到文件冲突结果,根据文件冲突结果将第二版本代码文件更新至预设第二版本代码库;
第二更新模块610,用于当查询结果为不存在关联的代码文件时,将第二版本代码文件复制至预设第二版本代码库。
上述代码升级装置,当监听到第一版本代码文件更新时,获取更新的第一版本代码文件,调用代码转换工具,对更新的第一版本代码文件进行代码转换,能够得到代码转换后的第二版本代码文件,通过根据第二版本代码文件查询预设第二版本代码库,得到查询结果,根据查询结果的不同采用不同的方式将第二版本代码文件存储至第二版本代码库,能够实现将第一版本代码平滑升级到第二版本代码,在代码升级的过程中,不需要停止整个项目的开发,也不需要在项目代码上做兼容改造,能够提高代码升级效率。
在一个实施例中,代码升级装置还包括第一监听模块,第一监听模块用于监听第一版本代码文件更新事件,当监听到更新的第一版本代码文件提交至预设第一版本代码库时,获取更新的第一版本代码文件。
在一个实施例中,查询模块还用于从预设第二版本代码库拉取代码文件列表,并获取第二版本代码文件的文件标识,比对文件标识和代码文件列表,当代码文件列表中存在与文件标识对应的关联文件标识时,得到查询结果为存在关联的代码文件,当代码文件列表中不存在与文件标识对应的关联文件标识时,得到查询结果为不存在关联的代码文件。
在一个实施例中,代码升级装置还包括第二监听模块,第二监听模块用于监听第二版本代码文件更新事件,当监听到更新的第二版本代码文件提交至预设第二版本代码库时,获取更新的第二版本代码文件的更新文件标识,根据更新文件标识,更新预设加锁文件列表。
在一个实施例中,第一更新模块还用于获取关联的代码文件的关联文件标识,根据关联文件标识查询预设加锁文件列表,得到文件冲突结果,当文件冲突结果为存在文件冲突时,推送冲突告警提示,在得到授权时,将第二版本代码文件中的更新代码块更新至预设第二版本代码库,当文件冲突结果为不存在文件冲突时,将第二版本代码文件覆盖关联的代码文件。
在一个实施例中,第一更新模块还用于当预设加锁文件列表中存在与关联文件标识对应的目标文件标识时,得到文件冲突结果为存在文件冲突,当预设加锁文件列表中不存在与关联文件标识对应的目标文件标识时,得到文件冲突结果为不存在文件冲突。
在一个实施例中,代码转换模块还用于将第二版本代码文件存入预设中间层代码库,第一更新模块还用于当文件冲突结果为存在文件冲突时,推送冲突告警提示至用户终端,响应用户终端反馈的与冲突告警提示对应的代码处理操作消息,从中间层代码库获取第二版本代码文件中的更新代码块,将更新代码块更新至预设第二版本代码库。
在一个实施例中,代码升级装置还包括推送模块,推送模块用于推送测试验证提示,测试验证提示用于指示用户对第二版本代码库中的代码文件进行测试验证。
关于代码升级装置的具体限定可以参见上文中对于代码升级方法的限定,在此不再赘述。上述代码升级装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储加锁文件数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码升级方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种代码升级方法,其特征在于,所述方法包括:
当监听到第一版本代码文件更新时,获取更新的第一版本代码文件;
调用代码转换工具,对所述更新的第一版本代码文件进行代码转换,得到第二版本代码文件;
将所述第二版本代码文件存入预设中间层代码库;
根据所述第二版本代码文件查询预设第二版本代码库,得到查询结果;
当所述查询结果为存在关联的代码文件时,根据所述关联的代码文件得到文件冲突结果,根据所述文件冲突结果将所述第二版本代码文件更新至所述预设第二版本代码库;
当所述查询结果为不存在关联的代码文件时,将所述第二版本代码文件复制至所述预设第二版本代码库;
其中,根据所述文件冲突结果将所述第二版本代码文件更新至所述预设第二版本代码库包括:
当所述文件冲突结果为存在文件冲突时,推送冲突告警提示至用户终端;
响应所述用户终端反馈的与所述冲突告警提示对应的代码处理操作消息,从所述中间层代码库获取所述第二版本代码文件中的更新代码块,将所述更新代码块更新至所述预设第二版本代码库。
2.根据权利要求1所述的方法,其特征在于,在所述当监听到第一版本代码文件更新时,获取更新的第一版本代码文件之前,还包括:
监听第一版本代码文件更新事件;
所述当监听到第一版本代码文件更新时,获取更新的第一版本代码文件包括:
当监听到更新的第一版本代码文件提交至预设第一版本代码库时,获取更新的第一版本代码文件。
3.根据权利要求1所述的方法,其特征在于,所述根据所述第二版本代码文件查询预设第二版本代码库,得到查询结果包括:
从所述预设第二版本代码库拉取代码文件列表,并获取所述第二版本代码文件的文件标识;
比对所述文件标识和所述代码文件列表;
当所述代码文件列表中存在与所述文件标识对应的关联文件标识时,得到查询结果为存在关联的代码文件;
当所述代码文件列表中不存在与所述文件标识对应的关联文件标识时,得到查询结果为不存在关联的代码文件。
4.根据权利要求1所述的方法,其特征在于,还包括:
监听第二版本代码文件更新事件;
当监听到更新的第二版本代码文件提交至预设第二版本代码库时,获取所述更新的第二版本代码文件的更新文件标识;
根据所述更新文件标识,更新预设加锁文件列表。
5.根据权利要求1所述的方法,其特征在于,所述根据所述关联的代码文件得到文件冲突结果包括:
获取所述关联的代码文件的关联文件标识;
根据所述关联文件标识查询预设加锁文件列表,得到文件冲突结果。
6.根据权利要求5所述的方法,其特征在于,所述根据所述关联文件标识查询预设加锁文件列表,得到文件冲突结果包括:
当所述预设加锁文件列表中存在与所述关联文件标识对应的目标文件标识时,得到文件冲突结果为存在文件冲突;
当所述预设加锁文件列表中不存在与所述关联文件标识对应的目标文件标识时,得到文件冲突结果为不存在文件冲突。
7.根据权利要求1所述的方法,其特征在于,所述根据所述文件冲突结果将所述第二版本代码文件更新至所述预设第二版本代码库还包括:
当所述文件冲突结果为不存在文件冲突时,将所述第二版本代码文件覆盖所述关联的代码文件。
8.一种代码升级装置,其特征在于,所述装置包括:
获取模块,用于当监听到第一版本代码文件更新时,获取更新的第一版本代码文件;
代码转换模块,用于调用代码转换工具,对所述更新的第一版本代码文件进行代码转换,得到第二版本代码文件;
代码转换模块,还用于将第二版本代码文件存入预设中间层代码库;
查询模块,用于根据所述第二版本代码文件查询预设第二版本代码库,得到查询结果;
第一更新模块,用于当所述查询结果为存在关联的代码文件时,根据所述关联的代码文件得到文件冲突结果,根据所述文件冲突结果将所述第二版本代码文件更新至所述预设第二版本代码库;
第二更新模块,用于当所述查询结果为不存在关联的代码文件时,将所述第二版本代码文件复制至所述预设第二版本代码库;
其中,第一更新模块还用于当文件冲突结果为存在文件冲突时,推送冲突告警提示至用户终端,响应用户终端反馈的与冲突告警提示对应的代码处理操作消息,从中间层代码库获取第二版本代码文件中的更新代码块,将更新代码块更新至预设第二版本代码库。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011064935.8A CN111930411B (zh) | 2020-09-30 | 2020-09-30 | 代码升级方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011064935.8A CN111930411B (zh) | 2020-09-30 | 2020-09-30 | 代码升级方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111930411A CN111930411A (zh) | 2020-11-13 |
CN111930411B true CN111930411B (zh) | 2020-12-29 |
Family
ID=73334806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011064935.8A Active CN111930411B (zh) | 2020-09-30 | 2020-09-30 | 代码升级方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930411B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023207103A1 (zh) * | 2022-04-28 | 2023-11-02 | 华为云计算技术有限公司 | 代码转换方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103248524A (zh) * | 2013-05-09 | 2013-08-14 | 北京泛华恒兴科技有限公司 | 基于柔性测试技术的测试数据版本控制方法、装置及系统 |
CN105302533A (zh) * | 2014-07-25 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 代码同步方法和装置 |
CN109144548A (zh) * | 2018-08-27 | 2019-01-04 | 杭州安恒信息技术股份有限公司 | 一种基于git实现的多组件软件升级方法、装置及服务器 |
WO2019074730A1 (en) * | 2017-10-09 | 2019-04-18 | Microsoft Technology Licensing, Llc | IMPROVED TECHNIQUES TO UPDATE SOFTWARE |
CN109725927A (zh) * | 2018-05-08 | 2019-05-07 | 中国平安人寿保险股份有限公司 | 代码管理系统的同步方法及装置、存储介质及终端 |
CN110231956A (zh) * | 2019-06-20 | 2019-09-13 | 腾讯科技(深圳)有限公司 | 应用程序版本构建的方法、系统及装置 |
EP3579101A3 (en) * | 2018-06-04 | 2020-01-22 | Palantir Technologies Inc. | Constraint-based upgrade and deployment |
CN111045701A (zh) * | 2019-07-11 | 2020-04-21 | 华控清交信息科技(北京)有限公司 | 一种版本切换方法、装置和用于版本切换的装置 |
EP3690646A1 (en) * | 2019-01-31 | 2020-08-05 | Salesforce.com, Inc. | Correction of translated text in localized applications |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9715402B2 (en) * | 2014-09-30 | 2017-07-25 | Amazon Technologies, Inc. | Dynamic code deployment and versioning |
US10230786B2 (en) * | 2016-02-26 | 2019-03-12 | Red Hat, Inc. | Hot deployment in a distributed cluster system |
WO2018094099A1 (en) * | 2016-11-17 | 2018-05-24 | The Mathworks, Inc. | Systems and methods for automatically generating code for deep learning systems |
US10402311B2 (en) * | 2017-06-29 | 2019-09-03 | Microsoft Technology Licensing, Llc | Code review rebase diffing |
US10642603B2 (en) * | 2018-01-16 | 2020-05-05 | Nutanix, Inc. | Scheduling upgrades in distributed computing systems |
US10592677B2 (en) * | 2018-05-30 | 2020-03-17 | Paypal, Inc. | Systems and methods for patching vulnerabilities |
CN110045983B (zh) * | 2019-04-19 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 版本库管理方法、装置及服务器 |
CN110162334B (zh) * | 2019-05-29 | 2023-07-14 | 上海摩软通讯技术有限公司 | 一种代码管理方法、装置及存储介质 |
CN111562934B (zh) * | 2020-04-03 | 2023-08-11 | 深圳震有科技股份有限公司 | 一种基于热补丁的软件系统升级方法、终端及存储介质 |
-
2020
- 2020-09-30 CN CN202011064935.8A patent/CN111930411B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103248524A (zh) * | 2013-05-09 | 2013-08-14 | 北京泛华恒兴科技有限公司 | 基于柔性测试技术的测试数据版本控制方法、装置及系统 |
CN105302533A (zh) * | 2014-07-25 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 代码同步方法和装置 |
WO2019074730A1 (en) * | 2017-10-09 | 2019-04-18 | Microsoft Technology Licensing, Llc | IMPROVED TECHNIQUES TO UPDATE SOFTWARE |
CN109725927A (zh) * | 2018-05-08 | 2019-05-07 | 中国平安人寿保险股份有限公司 | 代码管理系统的同步方法及装置、存储介质及终端 |
EP3579101A3 (en) * | 2018-06-04 | 2020-01-22 | Palantir Technologies Inc. | Constraint-based upgrade and deployment |
CN109144548A (zh) * | 2018-08-27 | 2019-01-04 | 杭州安恒信息技术股份有限公司 | 一种基于git实现的多组件软件升级方法、装置及服务器 |
EP3690646A1 (en) * | 2019-01-31 | 2020-08-05 | Salesforce.com, Inc. | Correction of translated text in localized applications |
CN110231956A (zh) * | 2019-06-20 | 2019-09-13 | 腾讯科技(深圳)有限公司 | 应用程序版本构建的方法、系统及装置 |
CN111045701A (zh) * | 2019-07-11 | 2020-04-21 | 华控清交信息科技(北京)有限公司 | 一种版本切换方法、装置和用于版本切换的装置 |
Non-Patent Citations (1)
Title |
---|
基于Python的可配置网络爬虫;苏国新;苏聿;《宁德师范学院学报(自然科学版)》;20181231;第364页-第368页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111930411A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111666081B (zh) | 基于Git的项目版本发布方法、装置、设备及介质 | |
CN107943502B (zh) | 一种Linux系统下基于细粒度系统状态检测的升级方法 | |
CN110633160A (zh) | 接口调用方法、装置、计算机设备和存储介质 | |
US9244758B2 (en) | Systems and methods for repairing system files with remotely determined repair strategy | |
US20170068531A1 (en) | Method of deploying a set of software application(s) | |
CN113590169B (zh) | 应用部署方法、应用部署系统和计算机可读存储介质 | |
CN112860645B (zh) | 一种离线压缩文件的处理方法、装置、计算机设备及介质 | |
CN113835713B (zh) | 源码包下载方法、装置、计算机设备和存储介质 | |
CN113434158A (zh) | 一种大数据组件的自定义管理方法、装置、设备及介质 | |
CN111464603A (zh) | 一种服务器扩容方法及扩容系统 | |
CN111930411B (zh) | 代码升级方法、装置、计算机设备和存储介质 | |
CN110413292B (zh) | 应用程序的轻应用安装方法、移动终端及存储介质 | |
CN114064073A (zh) | 软件版本升级方法、装置、计算机设备和存储介质 | |
CN115543429A (zh) | 项目环境的搭建方法、电子设备及计算机可读存储介质 | |
CN112650555A (zh) | 一种管理平台的开发及测试方法、系统及介质 | |
CN110968569A (zh) | 数据库的管理方法、数据库的管理装置及存储介质 | |
CN115729590A (zh) | 服务部署方法、装置、设备和计算机可读存储介质 | |
CN111221556B (zh) | 一种远程升级rsu镜像方法及系统 | |
CN111522560A (zh) | 软件安装方法、装置、存储介质及电子设备 | |
CN111427607A (zh) | 配置文件修复方法、设备及计算机可读存储介质 | |
US8065671B1 (en) | Systems and methods for product updates with provisioning of data items | |
CN114721699B (zh) | 一种镜像升级方法、装置、电子设备及存储介质 | |
CN113419758B (zh) | 服务器基线的升级方法、装置与存储介质 | |
CN114610346B (zh) | 软件升级方法、装置、存储介质和电子设备 | |
CN111597570B (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 |